使用数据透视在 Oracle 中显示列名
Posted
技术标签:
【中文标题】使用数据透视在 Oracle 中显示列名【英文标题】:display column names in Oracle using pivot 【发布时间】:2017-08-25 12:14:01 【问题描述】:我试图在 4 列中显示 ename
,即 MANAGER
、SALESMAN
、ANALYST
、CLERK
在 oracle 11g 中的 SCOTT
模式中,其中只有经理的姓名才能获得显示在第 1 列,推销员在第 2 列,依此类推。
到目前为止,我已经这样做了:
select *
from (select job,
ename
from emp)
pivot (listagg(ename,',') within group(order by ename)
for job in ('MANAGER','CLERK','ANALYST','SALESMAN'))
这给了我想要的结果,但我想要不同的行而不是单个列的值中的多个值
任何人都可以帮助我在 PIVOT 的新列中显示列名,因为它只显示聚合函数,这些函数通常返回我想要多行的单行。
非常感谢。
【问题讨论】:
尝试删除listagg函数 @l3rutt 而我应该使用什么来代替?你看 pivot 期望在那个位置有一个聚合函数。 【参考方案1】:如果不想总结,我建议使用decode:
select decode(job,'MANAGER',ename) Manager,
decode(job,'CLERK',ename) CLERK,
decode(job,'CLERK',ename) CLERK,
decode(job,'SALESMAN',ename) SALESMAN
from emp;
【讨论】:
它给出了一个非格式化的输出。我希望所有列都用数据填充任何行。如果其他列有数据,那么其余列应该显示“null”,我想这只会发生在最后几行。 能否用所需的输出更新问题以上是关于使用数据透视在 Oracle 中显示列名的主要内容,如果未能解决你的问题,请参考以下文章