如何使用CASE条件和SUM()选择查询

时间:2019-06-26 17:45:40

标签: sql sql-server

表结构 enter image description here

我当前正在使用这些sql语句。我的表的字段trx_type包含“ LD”或“ LP”。我可以通过执行如下所示的2条SQL语句来总结主体的数量。

select sum(principal) from loanhist where trx_type ='LD' and ac_no  = '101300' and cycle = 1  --150000
select sum(principal) from loanhist where trx_type ='LP' and ac_no  = '101300' and cycle = 1--- 73512.13

如果我从LP中减去LD,我将得到76,487.87

当我尝试通过这种方式使用CASE条件时:

-SUM(CASE WHEN trx_type='LD' THEN LoanHist.principal ELSE 0 END) -
SUM(CASE WHEN trx_type='LP' THEN LoanHist.principal ELSE 0 END) AS outstanding_balance

我得到了这个-229,463.61

由于LD带有负号,所以如果我应该从SUM中删除负号,它将加数字而不是减。

有人可以建议解决这个问题的更好方法!

1 个答案:

答案 0 :(得分:1)

为了简化减法运算,您可以使用ABS()来获取绝对值(正值):

SUM(CASE WHEN trx_type='LD' THEN ABS(LoanHist.principal) ELSE 0 END)