2010-12-31 17 views
1

ID1、ID2、およびValueと呼ばれる3つの列を持つ表があります。条件付きPIVOT /変換の問題

サンプルデータ:

ID ID1 Value 
1 1 0 
1 2 1 
1 3 1 
1 3 2 
1 4 0 
1 4 1 
1 5 0 
1 5 2 
2 1 2 

値は、0に制限されている1、または私が行うために必要なもの2.

は、ピボット/回数の列ベースのカウントにこのデータを変換であります指定可能な各値がID、ID1でグループ化されて表示されます。上記の出力は次のようになります。

ID ID1 Val0 Val1 Val2 
1 1 1  0  0 
1 2 0  1  0 
1 3 0  1  1 
1 4 1  1  0 
1 5 1  0  1 
2 1 0  0  1 

私はSQL Server 2008を使用しています。これはどのように行うのですか?

+0

私は結果の2行目が '1 2 0 1 0'であると仮定していますか?ソースデータには1行だけがあります。 –

+0

あなたは正しいです。私はそれを修正した。 – IamIC

答えて

3
SELECT ID, 
     ID1, 
     COUNT(CASE WHEN Value=0 THEN 1 END) AS Val0, 
     COUNT(CASE WHEN Value=1 THEN 1 END) AS Val1, 
     COUNT(CASE WHEN Value=2 THEN 1 END) AS Val2 
FROM your_table 
GROUP BY ID, 
      ID1 
+0

うまくやった、@マーティン!カウントケース。スマート。 – IamIC