2016-07-01 413 views
1

我有一個表如下格式 enter image description here 我需要將其轉換爲這種格式SQL:轉換成多列行

enter image description here

所以基本上我期待多列轉換爲行。有人可以幫我弄這個嗎?

感謝

+1

請使用純文本格式的樣本數據,而不是圖像。 –

+0

查看'UNPIVOT' –

回答

3

嘗試

select * 
    from yourTable 
    unpivot (
    Value 
    for NewCol in (Value1, Value2, Value3,Value4, Value5) 
) up 
+0

感謝nazark,這對我有用。欣賞這裏的幫助。 –

0

轉換列行被稱爲unpivoting。將行轉換爲列是旋轉的。

一種解決數據不透明的方法是將apply operatortable value constructor合併。

本示例使用common table expression (CTE)返回3個樣本記錄。

Id ColumnOne ColumnTwo ColumnThree 
1 a   b   c 
2 d   e   f 
3 g   h   i 

-- Unpivoting with apply and VALUES.   
WITH SampleData AS 
    (
     /* This CTE returns 3 sample records. 
     */    
     SELECT 
      cte.* 
     FROM 
      (
       VALUES 
        (1, 'a', 'b', 'c'), 
        (2, 'd', 'e', 'f'), 
        (3, 'g', 'h', 'i') 
      ) AS cte(Id, ColumnOne, ColumnTwo, ColumnThree) 
    ) 
SELECT 
    sd.Id, 
    ca.* 
FROM 
    SampleData AS sd 
     CROSS APPLY 
      (
       VALUES 
        (ColumnOne), 
        (ColumnTwo), 
        (ColumnThree) 
      ) AS ca (ColumnFour) 
; 

返回的輸出如下所示:

Id ColumnFour 
1 a 
1 b 
1 c 
2 d 
2 e 
2 f 
3 g 
3 h 
3 i 

個人而言,我更喜歡@ nazark的做法。使用UNPIVOT運算符可幫助其他人遵循代碼的意圖。如果這個答案幫助你請accept it。接受答案獎勵貢獻者的努力,並幫助具有相同問題的其他人找到工作答案。

+0

感謝您解釋所有這些.. nazark的回覆幫助我獲得了所需的結果 –