sql - 如何在语句中编写 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
解决方案
你想用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;
推荐阅读
- wso2esb - 如何从 wso2 esb 中的现有 .text 文件中添加额外的列?
- ios - ios swift 4可见部分视图上的触摸事件
- python - 用 Tkinter 等待一定的时间
- angular - 无法匹配Angular中的路线
- db2 - 缺少 DB2 版本 10 percentile_CONT
- c++ - 即使不知道确切的元素数量,也调用 QVector::reserve?
- c# - Xamarin IOS无法在JavascriptCore中绑定函数或回调
- elasticsearch - ElasticSearch:查询语法很痛苦
- spring-boot - 在 Spring 中更新/合并我的 application.properties
- javascript - 转到 toString 然后返回时的正则表达式意外行为