通过具有两个或更多 "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)
我在 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)