获取SQL表列的总和,直到总和达到5000
我正在处理一个sql查询,该查询表有两列获取SQL表列的总和,直到总和达到5000,sql,sql-server,visual-studio-2012,Sql,Sql Server,Visual Studio 2012,我正在处理一个sql查询,该查询表有两列Amount和Date,这两列应返回Amount列值的总和,直到达到5000,并且还应返回Date列中sum(Amount)的值达到5000按日期排序 例如,我的SQL表中有以下数据 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
Amount
和Date
,这两列应返回Amount
列值的总和,直到达到5000
,并且还应返回Date
列中sum(Amount)的值
达到5000
按日期排序
例如,我的SQL表中有以下数据
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
在上表中,金额总和应在按日期排序后计算,并在达到5000马克时返回金额总和及其相关日期
在对数据进行排序之后,它变成如下所示
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
查询应返回以下结果
TotalAmount Date
5400 5/4/2014
上述结果是因为在ID=5、金额=200、日期=5/4/2014时,总和达到了5000
我想知道在SQL Server
中处理此问题的更好方法。对于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;
.以前不会知道总数5400,在我的问题中,5400是总数超过5000的地方。@Dev抱歉,该限制应该是5000,现在它返回第一个结果5000或更多,即(仍然)5400。