2016-09-26 6 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

あなたのデータ型が "string"にあるという理由だけでSUMを避けるだけであれば、PIVOTを使用することができます。ここでは、http://sqlmag.com/t-sql/pivoting-without-aggregationという素晴らしい記事があります。 –

答えて

2

これは実際に行を列に配置していません。だから、それは必要なピボットではありません。
colnameの値に応じて、一部の列に値を表示したいだけです。
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

ありがとうございました。出来た!!!! –

関連する問題