【发布时间】:2021-08-14 12:56:36
【问题描述】:
我想获取这些记录的每个月余额,每个月初的上限为 500 个积分。
我有点卡住了,因为我认为我不能简单地进行滚动求和,因为客户的最大余额是他新信用额的两倍(我在示例中使用 500 作为最大值)。
这是我的数据:
CREATE TABLE table1 as (
SELECT 'A' as customer_id, 250 as new_credits, -62 as debit, 1 as month_nb
UNION ALL
SELECT 'A', 250, -84, 2
UNION ALL
SELECT 'A', 250, -8, 3
UNION ALL
SELECT 'A', 210, -400, 4
UNION ALL
SELECT 'A', 210, -162, 5
UNION ALL
SELECT 'A', 210, 0, 6
)
我想看看这些结果:
有什么想法吗?谢谢!
【问题讨论】:
-
您是在问如何“限制”一个值(例如使用
LEAST()),还是您是在问如何引用前行的值(例如使用窗口函数)? -
我认为更多的是如何引用前行的值。我需要知道之前的余额,添加新的积分,并将其限制为 500。
-
谢谢,看起来很有用,但我认为这对我的用例来说还不够,因为我的上一行也需要基于其上一行,依此类推..
标签: sql amazon-redshift recursive-query balance rolling-sum