SQL Server查询问询:如何筛选不存在A3事件的井位站点
SQL Server 识别无A3事件井位查询方案
你可以使用以下任意一种SQL语句实现需求,针对你提供的示例数据返回结果均为W3、W4:
方案1:NOT EXISTS 写法(推荐,性能最优)
适合数据量较大的场景,走关联索引时查询效率最高:
SELECT DISTINCT Site FROM 你的业务表名 t1 WHERE NOT EXISTS ( SELECT 1 FROM 你的业务表名 t2 WHERE t2.Site = t1.Site AND t2.Event = 'A3' )
方案2:分组聚合写法
逻辑直观,适合需要同时统计其他事件指标的场景:
SELECT Site FROM 你的业务表名 GROUP BY Site HAVING SUM(CASE WHEN Event = 'A3' THEN 1 ELSE 0 END) = 0
方案3:LEFT JOIN 空值匹配写法
兼容更早期的SQL Server版本:
SELECT DISTINCT a.Site FROM 你的业务表名 a LEFT JOIN ( SELECT Site FROM 你的业务表名 WHERE Event = 'A3' ) b ON a.Site = b.Site WHERE b.Site IS NULL
注意:使用前请将代码中的
你的业务表名替换为实际使用的表名。
内容的提问来源于stack exchange,提问作者user4906240
相关产品推荐
相关产品推荐

