我从另一个子查询中携带了这个查询(可以工作),但我在WHERE中添加了一个CASE子句.它给我抛出了一个"缺少关键字"的错误,我看不出是什么问题.不幸的是,我周围没有人可以帮助我寻找我猜是一个我没有看到的非常小的错误.
这个 case 本质上应该是在说:
WHEN MONTH BETWEEN JAN AND JUN THEN START_DATE > 30/06/[CURRENT YEAR]
ELSE START_DATE > 30/06/[CURRENT YEAR] + 1
SELECT fp.object_id inv_id
,nvl(round(SUM((oc.finish_date - oc.start_date) * oc.slice)),0) forecast_amt
FROM odf_ssl_cst_dtl_cost oc
left join fin_cost_plan_details fd on fd.id = oc.prj_object_id
left join fin_plans fp on fp.id = fd.plan_id
and fp.plan_type_code = 'FORECAST'
and fp.is_plan_of_record = 1
WHERE CASE
WHEN MONTH(GETDATE()) BETWEEN 1 AND 6
THEN oc.start_date > DATEADD(MONTH,6,DATEADD(DD,-1,DATEADD(YYYY, DATEDIFF(YYYY,0,GETDATE()),0)))
ELSE oc.start_date > DATEADD(MONTH,6,DATEADD(DD,-1,DATEADD(YYYY, DATEDIFF(YYYY,0,GETDATE())+1,0)))
END
GROUP BY fp.object_id