我有類似如下的表:樞軸多行
id key str_val date_val num_val
1 A a
1 B b
1 C 2012-01-01
1 D 1
2 A c
2 E d
2 C 2012-01-02
2 D 2
我需要它看起來像:
id A B C D E
1 a b 2012-01-01 1
2 c 2012-01-02 2 d
基本上,每個關鍵需求,成爲它自己的列
我試過並且未能有效地使用PIVOT命令,而我正在試圖用case語句來完成此操作。即
select
id,
case key
when 'A'
then str_val
end as A,
case key
when 'C'
then date_val
end as C
--etc.
from test_table
但是我不知道如何在運行後組合表格行。我被困在:
id A B C D E
1 a
1 b
1 2012-01-01
1 1
任何想法或輸入可以幫助我嗎?提前致謝。
你知道,一切都將在結果列「A」(在原表中的行與鍵「A」)是相同的數據類型?例如,在你的例子中,所有的Cs都是Date或DateTime,是否有保證?每個ID /密鑰對只有一行?我想基本上你想UNPIVOT(使用關鍵字或UNIONs)每行的str_val,dateval,numval,然後使用舊式的「Max CASE(...)as」語法來轉換結果。 – 2012-03-23 20:44:38
@LevinMagruder你的假設都是正確的。我必須嘗試一下。 – 2012-03-23 20:56:56
事實上,克里斯凱利的回答和加文卡特爾的回答可能會更好。儘管沒有理由不嘗試所有這些。 – 2012-03-23 21:01:30