我在case语句中使用sum函数。我想对行进行选择性求和。
case when
type in ('A','B')
then nvl(SUM(Amount_1),Amount)
else Amount
Amount和Amount_1有两列,Amount_1列中,我想根据某些条件C1删除几行。对于例如如果我有10行在A中有类型且基于条件C1,我只得到8行,那么我想在仅8行的基础上对Amount_1列求和。
答案 0 :(得分:2)
我认为您已正确理解基本逻辑,但您的语法有点偏差。你应该在CASE
函数中使用SUM()
表达式,而不是相反。
SELECT type,
SUM(CASE WHEN type IN ('A', 'B')
THEN COALESCE(Amount_1, Amount) ELSE Amount END) AS type_sum -- ELSE 0 ?
FROM yourTable
这将为COALESCE(Amount_1, Amount)
为type
或A
的记录计算B
的总和,否则将在总和中使用Amount
。如果您打算不计算不匹配的记录,请使用ELSE 0
表达式中的CASE
修改我的查询。