TSQL - 查找购买了两套产品的客户

时间:2017-01-23 20:00:14

标签: sql-server tsql

我有一个像这样的值的表:

Customer    Product#
   A           1
   A           3
   A           5
   A           7
   A           11
   A           13
   B           5
   B           11
   B           13
   C           4
   C           5
   C           6
   C           11
   C           14
   C           42
   C           60

我想要一个查询,它将为我提供所有客户:

a. Either Product# 1 OR 5
AND
b. BOTH Product# 11 AND 13.

我将不胜感激任何帮助或建议。

谢谢!

2 个答案:

答案 0 :(得分:4)

试试这个:

concat($first-name, ' ' , $last-name)[not(contains(., 'Kiran'))]

按客户分组以查找是否存在11和13,使用条件聚合,同样,检查客户是否至少有一行,其中1或5行。

答案 1 :(得分:0)

'HAVING'可以工作,但您也可以使用几个子选项来执行此操作 - 更长,效率更低,但更容易记录和/或使用更复杂的输出。

SELECT DISTINCT
     a.customer
FROM 
     your_table AS a
WHERE 
     a.customer IN ( SELECT customer FROM your_table WHERE product# IN (1,5) )
     AND a.customer IN ( SELECT customer FROM your_table WHERE product# = 11)
     AND a.customer IN ( SELECT customer FROM your_table WHERE product# = 11)