我正在处理一个包含两列Amount
和Date
的表的SQL查询,该列应该返回Amount
列值的总和,直到达到5000
,它也应该返回Date
列Sum(Amount)
到达5000
Date
排序SQL TABLE
例如,我的 ID Amount Date
1 1000 5/5/2014
2 1000 5/1/2014
3 900 5/3/2014
4 1500 5/4/2014
5 2000 5/4/2014
6 2500 5/5/2014
ID Amount Date
2 1000 5/1/2014
3 900 5/3/2014
4 1500 5/4/2014
5 2000 5/4/2014
1 1000 5/5/2014
6 2500 5/5/2014
在上表中,金额的总和应在按日期排序后计算,一旦达到5000标记,应返还金额及其相关日期的总和。
在对数据进行排序之后,它变得类似于
TotalAmount Date
5400 5/4/2014
查询应返回以下结果
5000
上述结果是因为ID=5 Amount=200 and Date=5/4/2014
SQL Server
我想知道在{{1}}
中处理它的更好方法答案 0 :(得分:4)
对于SQL Server,您可以使用SUM() OVER()
并获取总和为> = 5000的第一行;
WITH cte AS (
SELECT id, date, SUM(amount) OVER (ORDER BY date,id) totalamount
FROM mytable
)
SELECT TOP 1 totalamount, date
FROM cte
WHERE totalamount >= 5000
ORDER BY date, id;