我有一个表TAB
下面是示例内容:
Person_number | Eff_start_date | department | 10 | 01 - jun - 2022 | xyz |
---|---|---|
18 | 15 - 2022年5月—— | 即时 |
19 | 14 - 2022年5月—— | 哈德逊 |
03 - 2022年5月—— | xyz | |
15 - 2022年5月—— | 重播 | |
14 - 2022年5月—— | 湾 | |
30 | 03 - 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'))
不要去掉括号