通过使用两个或多个“IN子句”(SSMS)中的值来使用Group

时间:2018-05-23 09:06:55

标签: sql sql-server group-by having

我在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子句。

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

3 个答案:

答案 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