微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

2 列的运行余额/总计

如何解决2 列的运行余额/总计

我在 Azure MSsql 中有下表:

身份证, 收费, 付款

ID 是主键并且是唯一的,Charge 和 Payment 是数字。

身份证收费支付
1 10 空
2 空 10
3 40 空
4 空 30

我想做以下查询

select *,SUM(charge)-sum(payment) OVER (order by id) AS Balance
from Table T
order by id asc

以上数据样本中的内容如下所示:

ID 收费支付余额
1 10 空 10
2 空 10 0
3 40 空 40
4 空 30 10

但是该查询失败,抱怨我需要添加一个 Group by 子句,但是如果我运行以下内容

select *,SUM(charged) OVER (order by id) AS totalCharged
from table
order by id

效果很好 - 我觉得我错过了一些明显的东西。

我还应该注意到,最终查询中还有其他列,但由于它们与逻辑无关,因此在此处省略。

解决方法

事实证明,我遗漏了一些明显的东西。 我将源查询更改为使用 0 而不是 Null,然后执行以下操作:

select *,SUM(charged - payment) OVER (order by id) AS balance
from table
order by id

所以我在考虑瓷制宝座时自己想通了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。