Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取SQL表列的总和,直到总和达到5000_Sql_Sql Server_Visual Studio 2012 - Fatal编程技术网

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

获取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

我正在处理一个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 
    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。