我正在对一个包含两列的表进行 sql 查询Amount
and Date
应该返回总和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
在上表中,应在按日期排序后计算金额总和,并应在达到 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
上面的结果是因为总和达到了5000
at ID=5 Amount=200 and Date=5/4/2014
我可以知道更好的方法来处理它吗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;
用于测试的 SQLfiddle http://sqlfiddle.com/#!6/82141/10.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)