首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >减少余额的Postgresql返回值

减少余额的Postgresql返回值
EN

Stack Overflow用户
提问于 2018-07-09 06:27:01
回答 1查看 37关注 0票数 0

我有一个查询,返回一个人已经支付的项目,该项目的价格和余额。我的问题是,在某些情况下,一个人可以为一个项目支付两笔款项(支付一笔款项,然后另一笔支付余额)。因此返回的表如下所示:

代码语言:javascript
复制
 name    | invoice_id| inv_date | item_id|item     | pay_id | price | paid | balance |
---------|-----------|----------|--------|---------|--------|-------|------|---------|
 John Doe| 581       | 2018-4-10| 10     |Transport| 1165   | 8100  | 5400 | 2700    |
 John Doe| 581       | 2018-4-10| 10     |Transport| 1030   | 8100  | 2700 | 5400    |
 John Doe| 581       | 2018-4-10| 25     |Insurance| 1165   | 24000 | 12000| 12000   |
 John Doe| 581       | 2018-4-10| 25     |Insurance| 1030   | 24000 | 12000| 12000   |
---------|-----------|----------|--------|---------| -------|-------|------|---------|

从返回结果可以看出,每秒钟支付的余额是不正确的。以运输的第二次付款为例,以前的5400付款是2700,现在的付款是2700,所以(5400 + 2700 = 8100 )的余额应该是0。因此,我的问题是,我如何才能返回适当的余额,每次后续支付的每一项?

目前,我将balance返回为(price - paid),但是对于以后的支付,余额是不正确的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-09 06:36:58

你想要一个窗口功能。

代码语言:javascript
复制
 price - 
    sum(paid) over (partition by item_id order by pay_id desc)
    as balance.

您可能想要一个不同的顺序,使用任何排序您的报告使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51239321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档