【发布时间】:2020-11-26 03:30:20
【问题描述】:
我遇到了与此 calculate balance in postgres 相同的问题,但与连接表有关。
我有桌子 A
ID amount deduct_id created_time
1 100.00 1 2020-01-01 15:30:20
2 10.00 1 2020-01-01 15:32:20
3 30.00 1 2020-01-01 15:43:20
4 5.00 1 2020-02-02 08:30:20
5 10.00 2 2020-02-02 23:30:20
6 20.00 2 2020-02-03 10:30:20
和表B一起
deduct_id amount created_time
1 100.00 2020-02-02 10:00:20
2 15.00 2020-02-03 10:00:20
现在我需要一个查询,它会给出以下结果:
ID amount deduct Balance created_time
1 100.00 0.00 100.00 2020-01-01 15:30:20
2 10.00 0.00 110.00 2020-01-01 15:32:20
3 30.00 0.00 140.00 2020-01-01 15:43:20
4 5.00 0.00 145.00 2020-02-02 08:30:20
null 0.00 100.00 45.00 2020-02-02 10:00:20
5 10.00 0.00 55.00 2020-02-02 23:30:20
null 0.00 15.00 40.00 2020-02-03 10:00:20
6 20.00 0.00 60.00 2020-02-03 10:30:20
我正在使用 postgres 9.6
deduct_id 用于指示数据是否是该日期扣除的一部分。
created_time表示时间线。
[更新] 以及如何实现按月过滤?
ID amount deduct Balance created_time
1 100.00 0.00 100.00 2020-01-01 15:30:20
2 10.00 0.00 110.00 2020-01-01 15:32:20
3 30.00 0.00 140.00 2020-01-01 15:43:20
ID amount deduct Balance created_time
4 5.00 0.00 145.00 2020-02-02 08:30:20
null 0.00 100.00 45.00 2020-02-02 10:00:20
5 10.00 0.00 55.00 2020-02-02 23:30:20
null 0.00 15.00 40.00 2020-02-03 10:00:20
6 20.00 0.00 60.00 2020-02-03 10:30:20
我知道这是一个糟糕的表格设计,但有可能达到那种结果吗? 这要怎么做?
在此先感谢,非常感谢任何帮助。
【问题讨论】:
-
请说明
deduct_id和created_time的角色,展示您尝试过的内容,并公开您的Postgres 版本。 -
更新了@ErwinBrandstetter 我想使用 created_time 来过滤 WHERE 条件。所以我可以在特定月份范围内获得余额,起始余额是上个月的最后余额
标签: sql database postgresql sum window-functions