首页 > 解决方案 > 如何在语句中编写 case 以查看 2 个值的总和是否相等?

问题描述

我仍在学习 sql,所以如果这很简单,我深表歉意。

我需要 sql 代码来计算销售额和返回金额的总和,如果它们相等,我想用 1 标记该帐号以知道它已完全取消。

i.[status], i.accountnumber,
case when sum(i.saleamount) = sum(r.returnamount) then 1 else 0 end as full_return_flag
from [idtable] i 
join [returntable] r on r.id = i.id


> Account Number Sale Amount  Return Amount   Full_return_flag  Status
> 1                 500              250                    1    Open
> 2                 500             1500                    1    Open
> 3                2000               0                     0    Neutral
> 4                  100              0                     0    Closed

标签: sql

解决方案


你想用case表达式聚合:

select i.status, i.accountnumber, sum(i.saleamount) as saleamount, sum(r.returnamount) as returnamount,
       (case when sum(i.saleamount - r.returnamount) = 0 then 1 else 0 end) as Full_return_flag
from idtable] i inner join
     returntable r
     on r.id = t.id
group by i.status, i.accountnumber;

推荐阅读