Использование группы, имеющей значения в двух или более «предложениях IN» (SSMS) - PullRequest
0 голосов
/ 23 мая 2018

У меня есть таблица в 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 голосов
/ 23 мая 2018

Полное предположение, но ... возможно ???

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);
0 голосов
/ 23 мая 2018

Вы также можете попробовать 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)

Посмотреть демо-версию

0 голосов
/ 23 мая 2018

Попробуйте это:

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