次の結果を返すカテゴリごとに各顧客が費やした金額を返すピボット クエリがあります。
transaction_id 1 2 3 4 5 6 7
10-52927 NULL NULL NULL NULL NULL NULL NULL
10-52928 NULL NULL NULL NULL NULL NULL NULL
10-52929 8 NULL NULL NULL NULL 149 NULL
10-52930 NULL NULL NULL NULL NULL NULL NULL
10-52931 NULL NULL NULL NULL NULL NULL NULL
10-52932 NULL NULL 12 NULL NULL NULL NULL
10-52934 NULL NULL NULL NULL NULL NULL NULL
10-52935 NULL NULL NULL NULL NULL 33 NULL
10-52936 NULL NULL NULL NULL NULL NULL NULL
ピボットは、製品レベルからカテゴリへの売上を集計する複数の行に基づいています。つまり、各 transaction_id レコードは、 sum() をピボット パラメーターとして使用して、通常 20 以上の行から集計されます。
私が達成したいのは、顧客がカテゴリ1、2、3、4、5から何かを購入したかどうかを示す0-1形式で結果を取得することです...〜400 + 店舗。
結果を保存および更新するための追加のテーブルを作成せずにこのタスクを実行する方法について何か提案はありますか?
前もって感謝します。
編集:
表示される出力を生成するクエリは次のとおりです。
select transaction_id, [1], [2], [3], // up to ~400 numerical categories
from (SELECT [transaction_id]
,[category]
,sum([SUM]) as SUM_2
FROM [XXX].[dbo].[receipts]
left join // join of recept table with category table
where // store type related parametrs
group by transaction_id, category) p
PIVOT (sum([sum_2]) for [category] in
([1], [2], [3], [4], ... ) // shortened list of categories in order to improve code readability
) as pvt
ORDER BY pvt.transaction_id
カテゴリー