我不确定如何实现这一目标。我希望得到拥有“ProductA”的人,而不是拥有“ProductA”和“ProductB”的人。
预期产出:
requests
表:
patch
答案 0 :(得分:2)
我会在每个客户处使用条件汇总,并检查客户是否至少购买了A
一次而不是B
。
SELECT CustomerID
FROM #TempTable
GROUP BY CustomerID
HAVING SUM(CASE WHEN Product = 'ProductA' THEN 1 ELSE 0 END) > 0 AND
SUM(CASE WHEN Product = 'ProductB' THEN 1 ELSE 0 END) = 0
答案 1 :(得分:0)
按CustomerID
分组,您可以检查可用的最小和最大Product
是否相同,这应该是您正在寻找的那个,实际上,'ProductA':
SELECT
CustomerID,
min(Product)
FROM TempTable
GROUP BY CustomerID
HAVING 1=1
AND min(Product) = 'ProductA'
AND max(Product) = 'ProductA'
;
答案 2 :(得分:0)
SELECT C1.CustomerID
FROM #TempTable C1
LEFT JOIN #TempTable C2
ON C2.ID = C1.ID
AND C2.Product = 'ProductB'
where C2.ID is null
AND C1.Product = 'ProductA'
答案 3 :(得分:0)
使用PIVOT:
WITH CTE
AS
(
Select CustomerID, [ProductA], [ProductB] from #TempTable
PIVOT
(
MAX(Product) FOR Product IN ([ProductA], [ProductB])
) p
WHERE [ProductB] IS NULL
)
Select CustomerID, [ProductA] as Product
from CTE