使用pivot在Oracle中显示列名

时间:2017-08-25 12:14:02

标签: sql database oracle11g pivot pivot-table

我试图在ename中的MANAGERSALESMANANALYSTCLERK的4列中显示SCOTT oracle 11g中的模式,其中只有管理者的名字显示在第1列,salesmans显示在第2列,等等。

到目前为止,我已经这样做了:

select * 
  from (select job,
               ename 
          from emp) 
 pivot (listagg(ename,',') within group(order by ename) 
   for job in ('MANAGER','CLERK','ANALYST','SALESMAN'))

它给了我想要的结果,但我想要在不同的行而不是单个列值中的多个值

任何人都可以帮我在PIVOT的新列中显示列名,因为它只显示聚合函数,这些函数通常会返回我需要多行的单行。

提前多多感谢。

1 个答案:

答案 0 :(得分:0)

如果您不想总结它,我建议使用decode:

select decode(job,'MANAGER',ename) Manager, 
       decode(job,'CLERK',ename) CLERK, 
       decode(job,'CLERK',ename) CLERK,
       decode(job,'SALESMAN',ename) SALESMAN
from emp;