oracle 11g 行转列后的列名怎么在外层SQL中使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 11g 行转列后的列名怎么在外层SQL中使用相关的知识,希望对你有一定的参考价值。
例如:
select * from(select name,sum(num) from v_emplee) pivot (sum(num) for name in('PM','DOWN'))
结果:
PM DOWN
0.01 0.02
我想在此SQL上在写个SQL查询,如下:
select (1-'PM') from
(
select * from(select name,sum(num) from v_emplee) pivot (sum(num) for name in('PM','DOWN'))
) T
问题是 那个 1-'PM' 不行,'PM' 取不到列值,求大神!!
select 1-PM,down from
(
select * from(select name,sum(num) from v_emplee) pivot (sum(num) for name in('PM','DOWN'))
) T追问
不行,我试过了!
参考技术A number-VARCHAR?pm和dpwn都是值吧,追问
运算不重要,问题是怎么列举一个个列出来,select *可以,select 列名 就不行
追答你可以给表加一个别名,使用别名来选择字段
参考技术B for name in('PM'as pm,'DOWN'as down)) 不要写1-pm本回答被提问者采纳 参考技术C 不知道 参考技术D 美国苹果股份有限公司设计生产的手机叫iphone, 苹果公司的所有产品人们都喜欢叫他苹果,如苹果电脑,苹果手机、苹果mp4、。但是苹果公司的每一款产品都是有独立的名字的,如 手机叫iphone ,笔记本叫 macbook,音乐播放器叫ipod ,平板电脑叫ipad。PIVOT:行转列函数
PIVOT函数,行转列
PIVOT函数的格式如下:
PIVOT(<聚合函数>([聚合列值]) FOR [行转列前的列名] IN([行转列后的列名1],[行转列后的列名2],[行转列后的列名3],.......[行转列后的列名N]))
<聚合函数>就是我们使用的SUM,COUNT,AVG等Sql聚合函数,也就是行转列后计算列的聚合方式。
[聚合列值]要进行聚合的列名
[行转列前的列名]这个就是需要将行转换为列的列名。
[行转列后的列名]这里需要声明将行的值转换为列后的列名,因为转换后的列名其实就是转换前行的值,所以上面格式中的[行转列后的列名1],[行转列后的列名2],[行转列后的列名3],......[行转列后的列名N]其实就是[行转列前的列名]每一行的值。
SELECT FROM [StudentScores] /数据源/
AS P
PIVOT
(
SUM(Score/分数----行转列后 列的值/) FOR
p.Subject/课程-----需要行转列的列/ IN ([语文],[数学],[英语],[生物]/列的值*/)
) AS T
SqlServer PIVOT函数快速实现行转列,UNPIVOT实现列转行 - PowerCoder - 博客园 http://www.cnblogs.com/OpenCoder/p/6668882.html
以上是关于oracle 11g 行转列后的列名怎么在外层SQL中使用的主要内容,如果未能解决你的问题,请参考以下文章