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有张表,需要每晚自动实现行转列。

具体情况如下图:

实现行转列。
每晚自动运行。
谢谢!

create procedure p_rowtocolumn
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 行转列 ,这个要怎么转的主要内容,如果未能解决你的问题,请参考以下文章

oracle行转列sql怎么写?

Hive 行转列 & 列转行

Oracle列转行,行转列

oracle 11g 行转列后的列名怎么在外层SQL中使用

oracle 列名不确定 行转列

SAS行转列&&列转行