oracle 列转行的问题。图1是数据库查询的结果 图二是我想要的结果的格式...
发布网友
发布时间:2022-05-02 23:03
我来回答
共2个回答
热心网友
时间:2022-05-04 13:15
如果你的列是固定的,无论多少行,都可以通过典型的case when语句来处理,由于你图1不太能看清,我们假设你想显示列名为typeid,值为1,3,4的分列统计信息,则SQL语句如下:
select orgid,
sum((case when typeid=1 then 1 else 0 end))as typeid1,
sum((case when typeid=3 then 1 else 0 end))as typeid3,
sum((case when typeid=4 then 1 else 0 end))as typeid4
from Table001 where 1=1
group by orgid
如能提供清晰的图1,我再写给你完全可执行的SQL
热心网友
时间:2022-05-04 14:33
如果Oracle版本为11g或以上,可以使用pivot函数将记录行转成列。SQL语句如下:
select *
from (
select organization_id as orgId, event_type_id as typeId
from tb_name
) s
pivot ( count(typeId) for typeId in (1 as typeId_1_cnt, 3 as typeId_3_cnt, 4 as typeId_4_cnt) );
如果Oracle版本低于11g,则要另想办法了。