获取SQL表列的总和,直到总和达到5000

时间:2014-05-05 18:22:38

标签: sql sql-server visual-studio-2012

我正在处理一个包含两列AmountDate的表的SQL查询,该列应该返回Amount列值的总和,直到达到5000,它也应该返回DateSum(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}}

中处理它的更好方法

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;

An SQLfiddle to test with