【发布时间】:2018-06-29 18:26:45
【问题描述】:
我正在尝试做这样的事情
select *
from m
where CASE WHEN x=1 THEN trunc(m.ATT_DATE) between '18-01-01' AND '18-12-31'
WHEN x=2 THEN trunc(m.main_date) between '18-01-01' AND '18-12-31'
ELSE 1 END = 1;
x 是一个变量
我收到此错误
ORA-00905: mot-clé 不存在
00905. 00000 - “缺少关键字”
*原因:
*行动:
Erreur à la ligne 182,科隆 42
【问题讨论】:
-
THEN后面必须跟一个表达式(例如END关键字后面的常量1)。它后面不能跟一个条件。条件应该是什么?用文字描述它。应该是“x = 1 and ATT_DATE between ....”还是“x = 2 and ATT_DATE between....”或“x not in (1, 2)”?如果是这种情况(或者类似的情况),那么就这样写吧。你为什么想要/需要CASEconstruct?