问题描述
我正在对具有两列 Amount 和 Date 的表进行 sql 查询,该表应返回 Amount 列值的总和,直到达到5000 并且它还应该返回 Date 列中 Sum(Amount) 达到 5000 按 <排序的值代码>日期代码>
I am working on an sql query for a table with two columns Amount and Date which should return sum of Amount column values until reaches 5000 and it should also return the value in Date column at which Sum(Amount) reaches 5000 sorted by 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
在上表中,Amount 的总和是按 Date 排序后计算的,当达到 5000 时,返回 Amount 及其关联 Date 的总和.
In the above table the sum of Amount should be calculated after sorting it by Date and should return the sum of Amount and its associated Date once it reaches 5000 mark.
对数据进行排序后,它变成如下所示
after sorting the data it becomes something like following
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 Amount=200 and Date=5/4/2014
我可以知道在 SQL Server
推荐答案
对于 SQL Server,你可以使用 SUM() OVER() 并且只得到总和 >= 的第一行5000;
For SQL Server, you can use SUM() OVER() and just get the first row where the total sum is >= 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.
这篇关于获取 SQL 表列的总和,直到总和达到 5000的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!


大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)