値の範囲を変換するピボット テーブルを作成しようとしています。私はこの合計トリックを使用していますが、最近ピボット演算子について学び、データをピボットテーブルに変換しようとしています。コードはその方が保守しやすいかもしれません。(データを少し隠すためにテーブルの名前を変更しました)
select consultation_id,
sum(case when current_status_id in (3,4,5,9,10,16,17,18,24,25,26) then 1 else 0 end) [Phase1],
sum(case when current_status_id in (4,9,10,16,17,18) then 1 else 0 end) [Phase2],
sum(case when current_status_id in (10,16,17,18) then 1 else 0 end) [Phase3],
sum(case when current_status_id = 24 then 1 else 0 end) [Rejected],
sum(case when current_status_id in (17,18) then 1 else 0 end) [Complete]
from subject with (NOLOCK,NOWAIT)
where ACTIVE_IND = 1
group by consultation_id
変換を行う方法について提案がある人はいますか?
編集: 基本的に、相談の段階に到達した被験者数の集計を作成しています。これは、ユーザーが特定のデータを検索できるように、lucene インデックス用に作成された集計です。生の表形式データの例と、出力がどのように見えるかを次に示します::
select consultation_id,
sum(case when current_status_id in (3,4,5,9,10,16,17,18,24,25,26) then 1 else 0 end) [Phase1],
sum(case when current_status_id in (4,9,10,16,17,18) then 1 else 0 end) [Phase2],
sum(case when current_status_id in (10,16,17,18) then 1 else 0 end) [Phase3],
sum(case when current_status_id = 24 then 1 else 0 end) [Rejected],
sum(case when current_status_id in (17,18) then 1 else 0 end) [Complete]
from (values(1588054,11928257,3,1),
(1588054,11928256,10,1),
(1588054,11928255,10,1),
(1588054,11928254,4,1),
(1588052,11928233,2,1),
(1588052,11928232,3,0),
(1588052,11928231,10,1),
(1588052,11928230,18,1),
(1588052,11928229,24,1),
(1588052,11928228,24,1)) subject (consultation_id,subject_id,current_status_id,active_ind)
where ACTIVE_IND = 1
group by consultation_id