【发布时间】:2022-11-18 03:46:57
【问题描述】:
How to exclude records with certain values in sql select
我需要排除存在视频或面对面的整个月份,但保留未找到其中任何一个选项的月份。我正在使用有效的 NOT EXISTS 但是当我根据日期范围进行过滤时,它排除了所有内容,因为它在日期范围内的某处找到了一个实例
| C1 | c2 | c3 |
|---|---|---|
| 149000 | 2022-06-21 00:00:00.000 | Telephone |
| 149000 | 2022-06-21 00:00:00.000 | Video |
| 149000 | 2022-06-24 00:00:00.000 | Telephone |
| 149000 | 2022-07-08 00:00:00.000 | Telephone |
| 149000 | 2022-07-15 00:00:00.000 | Telephone |
| 149000 | 2022-07-22 00:00:00.000 | Telephone |
| 149000 | 2022-07-29 00:00:00.000 | Telephone |
| 149000 | 2022-08-12 00:00:00.000 | Telephone |
| 149000 | 2022-08-26 00:00:00.000 | Telephone |
| 149000 | 2022-09-01 00:00:00.000 | Face-to-Face |
| 149000 | 2022-09-01 00:00:00.000 | Face-to-Face |
| 149000 | 2022-09-12 00:00:00.000 | Telephone |
| 149000 | 2022-09-12 00:00:00.000 | Video |
两条注释行是测试行,用于查看它对我的结果有何影响。
SELECT
c1
,c2
,C3
FROM a1
WHERE
not exists (SELECT * FROM a1 as B WHERE b.c1 = a1.c1 and (b.c3= 'Face-to-Face' or b.c3 = 'Video') )
--and a1.c2 between '2022-06-01' and '2022-06-30')
--and a1.c2 = b.c2)
and c2 between '2022-01-01' and '2022-12-30'
【问题讨论】: