我有以下查询在SQL Server 2012上运行良好:
SELECT Name,
WeekNumber,
SUM(NumberOfSecondsWorked) AS totalDaily,
StartTime,
EndTime,
SUM(SUM(NumberOfSecondsWorked)) OVER (PARTITION BY WeekNumber ORDER BY EndTime) AS totalWeekly
FROM #temp AS T1
但是不幸的是,当在SQL Server 2008 DB上运行此查询时,出现以下错误:
Incorrect syntax near 'order'.
我对上述查询的期望结果是每周增加NumberOfSecondsWorked by Day。这是我想要的输出:
但是如果没有ORDER BY,我只得到每周的总数,而没有按天递增:
有人知道如何在SQL Server 2008中运行上述查询吗?还是获得相同结果的机制?谢谢!
答案 0 :(得分:3)
SQL Server 2008不支持累积和。我的建议是升级到受支持的SQL Server版本。
也就是说,您可以使用相关子查询或横向联接(即apply
)来实现此目的:
SELECT t.*,
(SELECT SUM(t2.totalDaily)
FROM #temp t2
WHERE t2.WeekNumber = t.WeekNumber AND
t2.EndTime <= t.EndTime
) as running_weekly
FROM #temp t2
答案 1 :(得分:0)
它说明直到SQL2012才支持您要执行的操作。 您可以使用同事建议的解决方法,但是最好的解决方案是迁移到支持您要执行的操作的sql server版本。 再见 西蒙妮(Simone)