我在SQL Server Management Studio中有一个表:
Customer_ID Store_ID date
12334 11111111 12.12.2017
14446 11111111 12.12.2017
10551 22222222 12.12.2017
10691 22222222 12.12.2017
10295 33333333 12.12.2017
10295 33333333 10.12.2017
10195 44444444 22.12.2017
我需要的是一个不同的Customer_ID
列表,在Store_ID
子句中都有IN
,第一个是(11111111, 44444444)
,第二个是(22222222, 33333333)
}。
至于现在我想我应该使用SELECT Customer_id
编写一个GROUP BY
的查询,但我不确定如何编写HAVING
子句。
有什么想法吗?提前谢谢。
答案 0 :(得分:2)
试试这个:
select Customer_ID from Tbl
where Store_ID in (11111111, 44444444)
intersect
select Customer_ID from Tbl
where Store_ID in (22222222, 33333333)
答案 1 :(得分:0)
一个完整的猜测,但......也许???
SELECT Customer_ID
FROM YourTable
GROUP BY Customer_ID
HAVING (COUNT(CASE Store_ID WHEN 11111111 THEN 1 END) > 0
AND COUNT(CASE Store_ID WHEN 44444444 THEN 1 END) > 0)
OR (COUNT(CASE Store_ID WHEN 22222222 THEN 1 END) > 0
AND COUNT(CASE Store_ID WHEN 33333333 THEN 1 END) > 0);
答案 2 :(得分:0)
您也可以尝试EXIST
select
distinct customer_id
from t t1
where
exists(
select 1
from t t2
where t2.customer_id =t1.customer_id
and t2.store_id in (11111111, 44444444)
)
and t1.store_id in (2222222,33333333)
的 See live demo 强>