2016-09-26 72 views
0

我試圖將行轉換爲列。請看下面的例子:SQL將行轉換爲列而無需彙總或轉換

colname | data1 | data2 

---------|--------|------------------------------------ 
    a | 1 | 
    a | 2 | 
    a | 3 | 
    b | 4 | 
    b | 5 | 
    c |  |  6 
    c |  |  7 

我想要的輸出:

 a | b  | c 

---------|--------|------------------------------------ 
    1 |  | 
    2 |  | 
    3 |  | 
     | 4 | 
     | 5 | 
     |  |  6 
     |  |  7 

誰能請分享你如何解決這個想法?

+0

請說明你到目前爲止嘗試過什麼? – Saurabh

+3

我不確定這可以在沒有'PIVOT'的情況下完成,除非您使用大量的硬編碼,只要數據發生變化就會中斷。爲什麼你不能使用'PIVOT'? – iamdave

+0

如果僅僅因爲數據類型是「字符串」而僅僅避免SUM,那麼仍然可以使用PIVOT,這裏有一篇很好的文章,http://sqlmag.com/t-sql/pivoting-without-aggregation。 –

回答

2

這不是真的把行放在列上。所以它不是需要的PIVOT。
您只是想根據colname具有的值顯示某些列中的值。
A CASE WHEN可用於此。

select 
case when colname = 'a' then data1 end as a, 
case when colname = 'b' then data1 end as b, 
case when colname = 'c' then data2 end as c 
from yourtable; 
+0

謝謝。有效!!!! –