Dan*_*lle 1 sql t-sql sql-server group-by not-exists
我有一个表,其中包含来自其他两个表的 ID。那是两个整数。
CustomerId SectionId
====================
1 1
1 2
1 3
2 2
2 3
3 1
3 2
3 3
4 2
4 3
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是那些缺少 SectionId=1 的记录。对于上面的示例,我需要检索 CustomerId 2 和 4。
我不能在 SectionId <> 1 的地方执行 Select customer ID,因为它会给我带来所有记录(1 到 4)。我特别需要那些,独立于他们拥有的 SectionId,缺少 SectionId=1
谢谢。
你需要NOT EXISTS:
SELECT DISTINCT t1.CustomerId
FROM tablename t1
WHERE NOT EXISTS (SELECT 1 FROM tablename t2 WHERE t2.CustomerId = t1.CustomerId AND t2.SectionId = 1)
Run Code Online (Sandbox Code Playgroud)
或者,使用条件聚合:
SELECT CustomerId
FROM tablename
GROUP BY CustomerId
HAVING COUNT(CASE WHEN SectionId = 1 THEN 1 END) = 0
Run Code Online (Sandbox Code Playgroud)