我有一个Oracle SQL查询,我需要选择某些扣减代码,并根据扣除代码91B的保费金额提供预定金额。这些是我需要总结的硬编码值。
SELECT SUM(DECODE(DEDCD,'91A',AL_AMOUNT,0)) MED91A,
SUM(CASE WHEN DEDCD = '91B' THEN
DECODE(AL_AMOUNT, 23.54,7.85,
40.62,8.31,
43.85,8.31,
56.77,8.31,
AL_AMOUNT)) MED91B
FROM PS_AL_CHK_DED
WHERE WEEK_NBR = 6
AND TO_CHAR(CHECK_DT, 'YYYY')=TO_CHAR(SYSDATE, 'YYYY')
SUM(DECODE ..)
语句用于汇总dedcd = '91A'
工作正常的值。当我添加该部分以汇总其中dedcd = '91B'
的值时,它会在解码语句之后产生“丢失的关键字”错误。我正在尝试简化查询,以便生成我需要的这两个演绎代码的结果,因为完整的查询需要花费很长时间才能运行。
Oracle Sql Developer 4.0.2.15
答案 0 :(得分:1)
您必须使用 END 关键字完成案例表达式语法。
这样做:
CASE WHEN DEDCD = '91B' THEN DECODE(AL_AMOUNT, 23.54,7.85, 40.62,8.31, 43.85,8.31, 56.77,8.31, AL_AMOUNT) END
基本案例表达式如下:
CASE [ expression ] WHEN condition_1 THEN result_1 WHEN condition_2 THEN result_2 ... WHEN condition_n THEN result_n ELSE result END
有关详细信息,请参阅documentation。