oracle 行转列 ,这个要怎么转
发布网友
发布时间:2022-04-22 20:42
我来回答
共3个回答
热心网友
时间:2022-04-08 02:24
with t(cate_displayname,info_waritername,count) as (
select '2014年','lizifeng',1 from al
union all
select '历史沿革','wenqingwen',20 from al
union all
select '领导讲话','lizifeng',3 from al
)
SELECT cate_displayname,
nvl(lizifeng,0) as lizifeng,
nvl(wenqingwen,0) as wenqingwen
FROM t
PIVOT (
sum(count) --<-- pivot_clause
FOR info_waritername --<-- pivot_for_clause
IN ('lizifeng' as lizifeng,'wenqingwen' as wenqingwen) --<-- pivot_in_clause
);
输出:
CATE_DISPLAYNAME LIZIFENG WENQINGWEN
------------------------ ---------- ----------
2014年 1 0
历史沿革 0 20
领导讲话 3 0
热心网友
时间:2022-04-08 03:42
如果确定只有最多三个项列那么可以这样
select 组号,单位,项一 项目号
,项一名 项目名
from tab where 项一 is not null
union all
select 组号,单位,项二,项二名 from tab where 项二 is not null
union all
select 组号,单位,项三,项三名 from tab where 项三 is not null
热心网友
时间:2022-04-08 05:17
select t.cate_displayname,sum(t.info_writername,'lizifeng',ct),sum(t.info_writername,'wenqingwen',ct),..... from table.. t goup by t.cate_displayname;
ct是你那个count(*)的别名,info_writername有多少具体项就写多少个对应的sum