我有一个数据透视查询,它返回每个客户在每个类别中花费了多少,返回以下结果:
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
Pivot 基于多行聚合从产品级别到类别的销售额,这意味着每个 transaction_id 记录通常使用 sum() 作为枢轴参数从 20 多行聚合。
我想要实现的是获得 0-1 格式的结果,表明客户是否购买了类别 1、2、3、4、5 的任何东西...... ~400 无需创建额外的表格,因为必须重复操作 100 + 商店。
有什么建议如何在不创建额外表来存储和更新结果的情况下执行此任务?
提前致谢。
编辑:
查询产品呈现的输出如下:
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
类别