我想迭代一个带有数值的列,并按我的方式对这些值求和,然后返回相应的ID和到目前为止的总和。所有这些都应该基于日期的升序
我的表格似乎是
id | money | date
---------- | ----------
01 | 2300 | 01/03/2017
02 | 35 | 01/01/2017
03 | 70 | 01/02/2017
所以我的结果是 -
id | money
----------
02 | 35
03 | 105
01 | 2405
从那里开始,我想只返回总和小于或等于一个值的id,所以假设值为2400,我的表结果将是 -
id
---
02
03
我写了一个查询 -
SELECT id
FROM tableName
WHERE 2400 >=
(SELECT id, SUM(money)
FROM tableName
WHERE money IS NOT NULL
GROUP BY id) WHERE EXISTS
(SELECT *
FROM tableName
WHERE date ASC));
我明白我只是在汇总钱,然后将一个整数与该数字进行比较,但我如何在一个查询中动态地执行此操作?我是否必须进行for循环?
答案 0 :(得分:0)
您可以使用sum
函数的窗口变量来获取总计:
SELECT id
FROM (SELECT id, SUM(money) OVER (ORDER BY date ASC) AS money
FROM monies) t
WHERE money <= 2400