我无法获得购买了商品A和B的客户数量。以下是我正在使用的数据示例。
Customer No | Item
___________________
1 A
1 B
2 B
3 A
4 A
4 B
5 B
6 A
我正在尝试统计购买了项目A和B的客户数量。这是我到目前为止所尝试的。我得到以下结果项目A = 5,项目B = 3以及项目A和B = 6。
Select
count (distinct case when ItemNo = 'A' then customerNo end) as [A],
count (distinct case when ItemNo = 'B' then customerNo end) as [B],
count (distinct case when (ItemNo = 'A' or ItemNo = 'B') then customerNo end) as [AandB]
from Items
这是我想要得到的结果:
Item | Count
A 4
B 4
A and B 2
有人可以指出我正确的方向以获得此结果。谢谢!
最佳答案
我认为您的预期结果可能是A = 4
和B = 4
。
您可以尝试使用UNION ALL
来获取A
,B
和A & B
数量。
SELECT ItemNo,COUNT(distinct customerNo) Count
FROM Items
GROUP BY ItemNo
UNION ALL
SELECT 'A and B',count(*)
FROM (
SELECT COUNT(DISTINCT ItemNo) cnt
FROM Items tt
WHERE ItemNo IN ('A','B')
GROUP BY [CustomerNo]
HAVING COUNT(DISTINCT ItemNo) = 2
) t1