1
我正在使用T-SQL,並且當前有一個列轉換,我試圖將其轉換爲多列轉換。我的當前SQL如下:如何將T-SQL單列unpivot語句轉換爲多列unpivot語句
T_Code Type P_Value
123 P_1 1
123 LA_1 2
123 LB_1 2
... ... --
:
SELECT T_CODE, TYPE, P_VALUE
FROM POC s
unpivot
(P_VALUE
FOR TYPE IN (P_1, P_2, P_3, P_4, P_5, P_6, LA_1, LA_2, LA_3, LA_4, LA_5, LA_6, LB_1, LB_2, LB_3, LB_4, LB_5, LB_6)) u
這產生了表具有以下結構,其中類型列可以包括18個值P_1-P_6,LA_1-LA_6和LB_1-LB_6之一我想什麼做的,但是是有以下結構的表:
T_Code P LA LB
123 1 2 2
當我研究這個網上,我碰到這個偉大Zen SQL blog post,我認爲來到省爲我提供了一個可行的解決方案,但我無法完成它的工作。
我的數據結構與示例有點不同,因爲我的類型列包含三種不同類型的數據,所以這是我認爲可能的工作。不幸的是,事實並非如此。任何人都可以指向正確的方向。
SELECT R_DATE, TYPE, P_VALUE
FROM POC s
unpivot
(P_VALUE
FOR TYPE IN (P_1, P_2, P_3, P_4, P_5, P_6)) u1
unpivot
(P_VALUE
FOR TYPE IN (LA_1, LA_2, LA_3, LA_4, LA_5, LA_6)) u2
unpivot
(P_VALUE
FOR TYPE IN (LA_6, LB_1, LB_2, LB_3, LB_4, LB_5, LB_6)) u3
下面是一些樣本數據:
T_Code Type P_Value
123 P_1 1
123 P_2 4
123 P_3 1
123 P_4 2
123 P_5 5
123 P_6 1
123 LA_1 1
123 LA_2 2
123 LA_3 1
123 LA_4 6
123 LA_5 1
123 LA_6 5
123 LB_1 1
123 LB_2 1
123 LB_3 1
123 LB_4 4
123 LB_5 9
123 LB_6 1
準備http://sqlfiddle.com中的初始結構和數據 – lad2025
您可以發佈'POC'表的樣本數據嗎? SQL小提琴也很適合排除故障。 –
你也在你的select語句中顯示R_DATE,但你的輸出顯示T_CODE。這兩個字段是相同還是在你的SQL不完整? –