[英]Pivot in Oracle 11g
我搜索了有关Oracle 11g中数据透视的Stackoverflow,但找不到适合我的情况的语法。
以下是我的查询(在Oracle 11g中运行)。
select
age,
gender,
sum(hours) as hours
from table1
group by age, gender
这是O / P结果
age gender hours
25 Male 10
55 Female 5
45 Female 12
...这是我想要的O / P结果
Age Male Female
25 10 0
45 0 12
55 0 5
...这是我的查询
select *
from
(
select
age,
gender,
sum(hours) as hours
from table1
)
pivot (
sum (hours) for gender in (
Male as 'Male',
Female as 'Female')
)
...这是错误:
ORA-00931: missing identifier
有人可以请我教育吗?
您接近:
select age, nvl(male, 0) male, nvl(female, 0) female
from
(
select age, gender, sum(hours) as hours
from table1
group by age, gender
)
pivot
(
sum(hours) for gender in ('Male' as male, 'Female' as female)
);
“缺少标识符”错误的原因是-预期的语法是
<Value> As <identifier>
因此,当您给-Male作为'Male'时,它找不到'as'之后的标识符,因此会出现此错误。
同样,即使您纠正了该错误,下一个错误也将显示为“不是单组分组函数”,因为您在选择年龄和性别以及汇总函数总和(小时)而不进行分组时(我刚才提到这是一个技术要点,您实际上不需要按此分组)。
请参考以下代码以获取输出。
SELECT age,nvl(male,0) AS male,nvl(female,0) AS frmale FROM
(SELECT *
FROM (
SELECT age,gender,hours
FROM test_subha3)
pivot (sum(hours) FOR gender IN ('Male' AS Male,'Female' AS Female))
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.