J'ai une table dans 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  

Et ce dont j'ai besoin est une liste de Customer_ID distincts qui auront Store_ID dans les deux "IN clauses", le premier est (11111111, 44444444) et le second est (22222222, 33333333).

Pour l'instant, je suppose que je devrais écrire une requête qui SELECT Customer_id en utilisant GROUP BY, mais je ne sais pas comment écrire la clause HAVING.

Des pensées à ce sujet? Merci d'avance.

0
John 23 mai 2018 à 12:06

3 réponses

Meilleure réponse

Essaye ça:

select Customer_ID from Tbl
where Store_ID in (11111111, 44444444)
intersect
select Customer_ID from Tbl
where Store_ID in (22222222, 33333333)
2
Michał Turczyn 23 mai 2018 à 09:21

Une supposition complète, mais ... peut-être ???

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
Larnu 23 mai 2018 à 09:19

Vous pouvez également essayer 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)

Voir la démo en direct

0
DhruvJoshi 23 mai 2018 à 09:21