通过具有两个或更多 "IN clauses" 中的值来使用 Group (SSMS)

Using Group by having values in two or more "IN clauses" (SSMS)

我在 SQL Server Management Studio 中有一个 table:

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 列表,它在两个“IN 子句”中都有 Store_ID,第一个是 (11111111, 44444444),第二个是 (22222222, 33333333).

至于现在我想我应该写一个查询 SELECT Customer_id 使用 GROUP BY,但我不确定如何写 HAVING 子句。

有什么想法吗?提前致谢。

试试这个:

select Customer_ID from Tbl
where Store_ID in (11111111, 44444444)
intersect
select Customer_ID from Tbl
where Store_ID in (22222222, 33333333)

一个完整的猜测,但是......也许???

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);

你也可以试试 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