oracle 行转列 ,这个要怎么转
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 行转列 ,这个要怎么转相关的知识,希望对你有一定的参考价值。
with t(cate_displayname,info_waritername,count) as (select \'2014年\',\'lizifeng\',1 from dual
union all
select \'历史沿革\',\'wenqingwen\',20 from dual
union all
select \'领导讲话\',\'lizifeng\',3 from dual
)
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 参考技术A 如果确定只有最多三个项列那么可以这样
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 参考技术B 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
SQLSERVER有张表,需要每晚自动实现行转列。
具体情况如下图:
实现行转列。
每晚自动运行。
谢谢!
as
select erpno,max(sum(BCBH1)) as BCBH
from tb
union all
select erpno ,max(sum(BCBH2)) as BCBH
from tb
...... 参考技术A 写一个存储过程,然后建立一个任务去调度呀(要开SQL的Agent服务)
以上是关于oracle 行转列 ,这个要怎么转的主要内容,如果未能解决你的问题,请参考以下文章