2017-09-22 12 views
0

はもともと、私は以下のようなSQL Serverのテーブルを持っているグループ化:SQL Serverは:ピボットなしの列に行を変換し、

Result Type Type Order Type Value 
-------------------------------------- 
KM1 Color 1    Blue 
KM1 Shape 2    Square 
KM1 Size  3    10 
KM3 Color 1    Blue 
KM3 Shape 2    Square 
KM3 Size  3    10 
KM2 Color 1    Red 
KM2 Shape 2    Round 
KM2 Size  3    20 
KM2 Color 1    Blue 
KM2 Shape 2    Square 
KM2 Size  3    10 
KM2 Color 1    Blue 
KM2 Shape 2    Round 
KM2 Size  3    10 

、これを行うことができる私の予想結果は

Color Shape Size Result 
------------------------------------- 
Blue Square 10  KM1, KM3, KM2 
Red  Round 20  KM2 
Blue Round 10  KM2 

ようにすべきですか?私は複数の値の組み合わせに対して同じ結果を得ているので、ピボットが役立つとは思わない。

+0

タイトルは、提案された複製で同じかもしれません。問題は非常に異なっています。 –

答えて

2

これは2つのレベルの集約です。最初は各結果を記述することです。 2つ目は、キーを一緒に取得することです。したがって:

with t as (
     select result, 
      max(case when type = 'Color' then value end) as color, 
      max(case when type = 'Size' then value end) as size, 
      max(case when type = 'Shape' then value end) as shape 
     from t 
     group by result 
    ) 
select color, size, shape, 
     stuff((select ',' + t2.result 
       from t t2 
       where t2.color = t.color and t2.size = t.size and t2.shape = t.shape 
       for xml path ('') 
      ), 1, 1, '') as keys 
from (select distinct color, size, shape 
     from t 
    ) t; 
+0

ありがとうございました。これは動的に行うことができますか?ヘッダーの色、サイズ、形状などは、色、幅、高さなどの他の結果に応じて変わることがあります。その場合、どのように処理できますか? –

+0

@ GopalB。 。 。私はあなたのGoogle "SQL Serverの動的ピボット"をお勧めします。 –

関連する問題