Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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 如何使用光标在值列表中迭代以计算每个值?_Sql_Sql Server_Cursor - Fatal编程技术网

Sql 如何使用光标在值列表中迭代以计算每个值?

Sql 如何使用光标在值列表中迭代以计算每个值?,sql,sql-server,cursor,Sql,Sql Server,Cursor,我一直在寻找一种方法来做我想做的事情,但我还没有找到解决办法。我将日期存储在如下表中: Dates Code Sum 1-15-2015 AAA (to be calculated) 2-2-2016 BBB (to be calculated) 11-23-2015 CCC (to be calculated) 表中每个记录的总和是根据日期列中的日期计算的。我想使用date列中的日期作为排序参数来计算表中的每条记录。我认为游标是最好的方法,但我对

我一直在寻找一种方法来做我想做的事情,但我还没有找到解决办法。我将日期存储在如下表中:

Dates      Code    Sum
1-15-2015  AAA     (to be calculated)
2-2-2016   BBB     (to be calculated)
11-23-2015 CCC     (to be calculated)
表中每个记录的
总和
是根据
日期
列中的日期计算的。我想使用
date
列中的日期作为排序参数来计算表中的每条记录。我认为游标是最好的方法,但我对SQL是新手,不知道如何实现这样的功能。例如,你可以完全补足总和计算。不管怎么说,这都是小事。我在其他地方看过几个例子,但我运气不好。非常感谢您的帮助

总和计算


通过传递查询从另一个数据库中提取日期范围内的值来计算总和。日期范围由示例表的
Dates
列中的日期确定。日期范围是从
Dates
列中的日期值到今天的日期(
GetDate()
)。我只需要知道如何将示例表中每条记录的左日期更改为
Dates
列中的日期。效率是关键。

我的答案非常笼统,但您需要执行
外部应用
交叉应用
,具体取决于您是否要过滤
空值

语法类似于以下内容:

Select  A.Dates, A.Code, X.Sum
From    YourTable   A
Outer Apply
(
    Select  Sum(B.StuffToSum)   As  Sum
    From    OtherDatabase.OtherSchema.OtherTable    B
    Where   B.Date Between A.Dates And GetDate()
) X
您的
OUTER APPLY
逻辑应该与您使用的实际逻辑相匹配,我只是用这个例子来说明如何获得从第一个表中的日期到
GETDATE()
的日期范围


使用
外部应用
,如果其他表中没有属于该日期范围的值,它将返回
NULL
。在交叉应用
的情况下
,整个记录将被过滤掉(这种行为类似于
内部联接
外部联接

您不需要光标,应该使用
交叉应用
外部应用
作为
总和
列。您对
Sum
列的逻辑是什么?@Siyual它只是一个基本的
Sum(StuffToSum)
聚合函数。如果这有助于你创建一些示例代码,你完全可以弥补它。永远不要认为游标是最好的方法,因为它几乎100%都不是最好的方法。这通常是最糟糕的方法。我不清楚,你不知道该怎么做。