我搜索并搜索了一种方法来做我想做的事情,但我还没有找到解决方案。我把日期存储在一个表中,如下所示:
Dates Code Sum
1-15-2015 AAA (to be calculated)
2-2-2016 BBB (to be calculated)
11-23-2015 CCC (to be calculated)
表中每条记录的sum
是根据Date
列中的日期计算的。我想使用Date
列中的日期作为排序参数来对表中的每条记录进行计算。我假设CURSOR是最好的方法,但我是SQL的新手,我不知道如何实现这样的功能。例如,你可以完全弥补总和计算。无论如何,它是微不足道的。我在其他地方看过几个例子,但我没有运气。任何帮助是极大的赞赏。
总和计算
通过在日期范围内通过传递查询从另一个数据库中提取值来计算总和。日期范围由示例表的Dates
列中的日期确定。日期范围是今天Dates
列中的日期值(GetDate()
)。我需要知道的是将示例表中每条记录的左侧日期更改为Dates
列中的日期。效率是关键。
答案 0 :(得分:0)
我的回答非常通用,但您需要OUTER APPLY
或CROSS APPLY
,具体取决于您是否要过滤NULL
值。< / p>
语法看起来与此类似:
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
逻辑应与您正在使用的实际逻辑相匹配,我只是以此为例说明如何从第一个表中的Date获取日期范围到{ {1}}。
使用GETDATE()
,如果您的其他表格中没有属于该日期范围的值,则会返回OUTER APPLY
。对于NULL
,整个记录将被过滤掉(此行为类似于CROSS APPLY
和INNER
)。