我正在编写SELECT查询,如下所示
SELECT COUNT(*) AS Number_of_rows
FROM PAY_DETL
WHERE
CASE
WHEN
Extract(MONTH FROM CURRENT_DATE) > 9
THEN
Extract(YEAR FROM PAY_EVT_BGN_DT) = Extract(YEAR FROM CURRENT_DATE) AND Extract(MONTH FROM CURRENT_DATE) > 9;
我在哪里得到以下错误
ORA-00905:缺少关键字 00905. 00000 - “缺少关键字
我收到错误的声明是Extract(YEAR FROM PAY_EVT_BGN_DT“here”)
有人可以帮助我吗?
谢谢
答案 0 :(得分:0)
您发布的查询或评论有多大帮助;什么"不分配"意思?
无论如何:你不能这样使用条件WHERE
子句。一个简单的选择是将查询分成两部分,UNION
将它们分成两部分,区分" WHERE
子句的部分对面。
例如:
select count(*) as number_of_rows
from pay_detl
where extract(year from pay_evt_bgn_dt) = extract(year from current_date)
and extract(month from current_date) > 9 --> this condition ...
union
select count(*) as number_of_rows
from pay_detl
where condition_different_from_the_one_above
and extract(month from current_date) <= 9 --> ... is just the opposite from this one
如果它没有帮助,请修改问题,提供测试用例,以便我们看到输入并描述输出 >看起来像(基于那个输入)。
答案 1 :(得分:0)
我们必须区分两个主要条件<,> 9
。然后,要考虑每个案例:
SELECT SUM(CASE WHEN Extract(MONTH FROM SYSDATE) > 9 THEN
DECODE(Extract(YEAR FROM PAY_EVT_BGN_DT), Extract(YEAR FROM CURRENT_DATE), 1, 0)
END COUNT_MORE_NINE),
SUM(CASE WHEN Extract(MONTH FROM SYSDATE) <= 9 THEN
1
END COUNT_ANOTHER)
FROM PAY_DETL;