我知道转换(或数据透视)w / s是一个常见的问题,但我无法完全达到我想要在堆栈/谷歌上做的事情。
简而言之,我想要/然后不用硬编码列的所有可能值的情况,因为这些值可能很多和/或随时间变化。例如,
id col val
1 a 65
1 b 34
1 c 25
2 a 67
2 c 22
...
目标是为每个不同的ID结束一行,每个不同的列
当col的值是静态的和小的时候很容易,但是当有几十个这样的值时,在case语句中对每个可能的子句进行硬编码似乎很难。
在psuedo代码中,我想要做的是
select
for each attr in (select distinct col from table)
sum(case when col = attr then val end) as transposed_attr,
end for
from table
group by id
但我对PL / SQL缺乏经验,所以我不知道如何在oracle中实现这一点。
么?
答案 0 :(得分:0)
什么版本的Oracle? 11g介绍了pivot命令......
事实上,只是看这里使用PIVOT命令而不是: http://orafaq.com/wiki/PIVOT