2
我知道轉置(或數據透視)w/sql是一個常見問題,但我一直無法完全達到我想要在堆棧/谷歌上執行的操作。基於列值的oracle轉置
簡而言之,我希望在沒有硬編碼列的所有可能值的情況下,因爲這些值可能很多和/或隨時間而改變。例如,
id col val
1 a 65
1 b 34
1 c 25
2 a 67
2 c 22
...
的目標是與單行爲每個不同的ID拉閘,與列每個不同的山坳
很容易的在山坳的值是靜態的,小的,但是當有在案例陳述中硬編碼每個可能的子句似乎都很艱難。
在僞代碼,我想做的事是
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實現這一目標。
建議?
對不起,9I。我沒有支點。 – 2011-12-20 19:34:41
@justincress - 然後,正如postesd鏈接所說的,您正在使用CASE/DECODE版本。如果您需要將300行旋轉爲300列,則需要300個CASE/DECODE語句。抱歉。 – MatBailie 2011-12-20 19:38:50