SQL查询没有返回not IN的正确输出



我有一个表TAB下面是示例内容:

tbody> <<tr>202829
Person_number Eff_start_date department
1001 - jun - 2022xyz
1815 - 2022年5月——即时
1914 - 2022年5月——哈德逊
03 - 2022年5月——xyz
15 - 2022年5月——重播
14 - 2022年5月——
3003 - 2022年5月——50 BG

您可以从消除department不等于Instant的情况开始,而不是Hudson。但添加CASE WHEN ... THEN表达式,当department =Instant时需要一个额外的条件

SELECT *
FROM tab
WHERE (department NOT IN ('Instant' ,'Hudson'))
OR CASE
WHEN department = 'Instant' THEN
eff_start_date
END >= date'2022-05-15'

您可以在查询中的WHERE子句中使用date。修改查询,如下所示

select PERSON_NUMBER,
EFF_START_DATE,
DEPARTMENT DEPT_NAME
FROM TBL
WHERE  TBL.DEPT_NAME <> 'Hudson'
or ( TBL.DEPT_NAME <> 'Instant'
AND   EFF_START_DATE < TO_DATE('2022/05/15','YYYY/MM/DD')
)

你的逻辑组合应该是这样的

SELECT
PERSON_NUMBER,
EFF_START_DATE,
DEPARTMENT DEPT_NAME
FROM 
TBL
WHERE  
TBL.DEPT_NAME <> 'Hudson'
AND (TBL.DEPT_NAME <> 'Instant'
AND EFF_START_DATE < TO_DATE('2022/05/15','YYYY/MM/DD'))

不要去掉括号

最新更新