寻找一种在我拥有最终数据时生成历史数据“快照”的方法,以及每周对数据的更改。
我在表CurrentData:
中有这些数据CurrentDate CurrentAmount
--------------------------
2013-07-24 400
我还在表ChangeData中有这些数据:
ChangeDate ChangeAmount
--------------------------
2013-07-23 -2
2013-07-22 -4
2013-07-21 10
2013-07-20 1
我希望能够随着时间的推移显示数据的样子。例如:
TotalDate TotalAsOfThisDate
--------------------------------
2013-07-24 400
2013-07-23 402
2013-07-22 406
2013-07-21 396
2013-07-20 395
理解我必须每天根据前一天的数据构建总数,我尝试了大量不同的东西,游标,临时表等。想知道如何在SQL中构建这种类型的视图。我正在运行SQL Server 2008R2。
答案 0 :(得分:0)
这可能不是性能最佳的查询,但应该适用于小型表:
SELECT CurrentDate as TotalDate, CurrentAmount as TotalAsOfThisDate
FROM CurrentData
UNION ALL
SELECT ChangeDate, (SELECT CurrentAmount from CurrentData)
-(SELECT SUM(ChangeAmount)
FROM ChangeData cd2
WHERE cd2.ChangeDate >= cd1.ChangeDate)
FROM ChangeData cd1
ORDER BY TotalDate DESC
答案 1 :(得分:0)
你可以使用OVER子句和CTE来获取技巧....
;WITH Source AS (
SELECT CurrentDate , CurrentValue FROM CurrentData
UNION
SELECT ChangeDate , -ChangeAmount FROM ChangeData )
SELECT CurrentDate, SUM(CurrentValue)
OVER (ORDER BY CurrentDate DESC)
FROM Source