【发布时间】:2021-02-11 09:31:59
【问题描述】:
我有一个 sql 查询,我需要根据一个条件在 where 子句中添加不同的语句(语句之间)。如果 TX.APPLICATION_ID 是“CONV”,那么我需要在 SYS_CREATION_DATE 添加过滤日期范围,如果 APPLICATION_ID 不是“CONV”,那么我需要在 TRANS_DATE 添加过滤日期范围。这是我正在尝试并收到“缺少关键字”错误的内容。请建议
WHERE TX.TRANS_TYPE IN ('CREDIT', 'CREDITR','CREDITR9', 'DSPJUS')
AND
CASE
WHEN TRIM(TX.APPLICATION_ID) = 'CONV'
THEN
TX.SYS_CREATION_DATE BETWEEN TO_DATE('20200831', 'YYYYMMDD') AND TO_DATE('20200831', 'YYYYMMDD')
ELSE
TX.TRANS_DATE BETWEEN TO_DATE('20200831', 'YYYYMMDD') AND TO_DATE('20200831', 'YYYYMMDD')
END
【问题讨论】:
-
别想
CASE。只需尝试使用布尔逻辑 AND、OR、NOT 组合您的条件。您不能使用CASE突然替换语句的任意部分。
标签: sql case where-clause between