2017-04-06 43 views
0

このタイプの問題に直面したのは今回が初めてではありません。複数の行のデータを1行、複数の列にまとめる

私は従業員の記録を引き出し、それらのレースを見つけようとしています。私はそれが最後に次のようになりたいと思い

Emp # | Race 
------------- 
1111 | White 
1111 | Asian 

Emp # | White | Black | Hispanic | Asian | Indian | Other 
--------------------------------------------------------- 
1111 | Y | N | N  | Y | N | N 

私はCTEのピボット機能を介してこれを試みたが、私したデータが現在返される方法がようですどのようにPIVOTを使用するかを十分に理解していないかもしれません。

+0

聖bejesusのような動的SQLを構築します。私は長い間よく探していましたが、お勧めの重複をすべて読んでいてもそれを見つけられませんでした。ありがとうございました! –

答えて

0

あまりにも愚かな単純なものでしたその

select Emp, 
    case when MAX(case when Race = 'White' then 1 else 0 end) = 1 then 'Y' else 'N' as White, 
    case when MAX(case when Race = 'Asian' then 1 else 0 end) = 1 then 'Y' else 'N' as Asian, 
    case when MAX(case when Race = 'Black ' then 1 else 0 end) = 1 then 'Y' else 'N' as Black 
from [YourTable] 
group by Emp 
+1

なぜダブルケースですか?私はMAXになります(レース=「白」、次に「Y」、他はN」の場合) –

+0

Giorgos Betsos - これは静的であることがわかります。私は、このようなクエリを生成する動的クエリを作成する必要があることを意味します。彼は純粋なSQLまたはクライアントアプリケーションでそれを生成することができます。 – ventik

+0

John Cappelletti - この場合は動作しますが、YとNの代わりに異なる値を使用する場合は、問題がある可能性があります。 – ventik

関連する問題