如何在 SQL 中将 CASE 表达式与 SUM 函数一起使用?
Posted
技术标签:
【中文标题】如何在 SQL 中将 CASE 表达式与 SUM 函数一起使用?【英文标题】:How can I use CASE expression with SUM function in SQL? 【发布时间】:2015-02-22 01:28:36 【问题描述】:我有一个 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
【问题讨论】:
【参考方案1】:您必须使用 END 关键字来完成 case 表达式 语法。
这样做:
DEDCD = '91B' THEN 时的情况 解码(AL_AMOUNT,23.54,7.85, 40.62,8.31, 43.85,8.31, 56.77,8.31, AL_AMOUNT) 结尾基本的 case 表达式如下所示:
案例[表达式] 当条件_1 那么结果_1 当条件_2 那么结果_2 ... 当条件_n 那么结果_n 其他结果 结尾有关详细信息,请参阅documentation。
【讨论】:
以上是关于如何在 SQL 中将 CASE 表达式与 SUM 函数一起使用?的主要内容,如果未能解决你的问题,请参考以下文章
SQL基础教程(第2版)第6章 函数谓词CASE表达式:练习题