首页 > 解决方案 > 通过将行转换为列的 Oracle SQL 查询输出

问题描述

我有 oracle 数据库表“应用程序”,其中包含以下几个示例行-

ID  NAME    SN
123 TV      032361097
123 CB      G92970256
236 TV      050791069
345 CB      45681089
456 TV  
456 CB  

我想通过将行转换为列来获得以下格式的输出 -

ID  NAME_TV SR_TV       NAME_CB SR_CB
123 TV      032361097   CB      G92970256
236 TV      050791069       
345                     CB      45681089
456 TV                  CB  

标签: sqloracle

解决方案


您可以使用条件聚合:

select id, 'TV' as name_tv, sum(case when name = 'TV' then sn end) as sn_tv,
        'CB' as name_cb, sum(case when name = 'CB' then sn end) as sn_cb
from app
group by id;

我确实有一个问题:为什么有name_tvandname_cb列?它们似乎是多余的。


推荐阅读