美好的一天Stackoverflow!PL/SQL在WHERE子句中使用CASE
我有一个查询给了我一个错误:“缺少右括号”,至少,SQL Developer说。
我的查询在WHERE子句中有一个CASE语句,它接受一个参数,然后根据输入的值执行一个条件。
我读过,当在WHERE子句中使用CASE语句时,必须用圆括号括住语句并将其赋值给数值,例如, “1”,但是这样做并不能实现我的目标。
我的目标是在符合条件的情况下执行CASE语句中的条件。
你介意看一看,给我一些输入吗?
谢谢!
SELECT ...
FROM ....
WHERE 1 = 1
AND (
CASE :P_REPORT_PERIOD
WHEN 'SPRING'
THEN ((fiscal_year = (EXTRACT(YEAR FROM (SYSDATE))-1) AND period >=10) OR (fiscal_year = (EXTRACT(YEAR FROM (SYSDATE))) AND period < 4))
WHEN 'FALL'
THEN ((fiscal_year = (EXTRACT(YEAR FROM (SYSDATE))) AND period >=4) OR (fiscal_year = (EXTRACT(YEAR FROM (SYSDATE))) AND period < 10))
END
) = 1