自联接导致查询永远运行

时间:2016-05-03 08:40:29

标签: sql sql-server-2012 self-join cumulative-sum

我正在尝试使用自联接来获得累积总和。问题是查询运行超过2小时没有任何结果。我该如何解决这个问题。

Select SUM(A.[GrossWeightKg] - A.[QtyLeftKg])/ 1000 AS DailyUsage
  , SUM(a.[GrossWeightKg] - a.[QtyLeftKg])/ 1000 AS Cumulative   
FROM [PMECentral].[dbo].[FactActualItemUsage] A
    LEFT OUTER JOIN [PMECentral].[dbo].[FactActualItemUsage] ff
        ON a.ActualItemUsageSourceId >= ff.ActualItemUsageSourceId 

1 个答案:

答案 0 :(得分:1)

在sql-server 2012中,您可以使用

....
SUM(a.[GrossWeightKg] - a.[QtyLeftKg]) OVER(ORDER BY ActualItemUsageSourceId ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) 
....

没有自我加入。查看OVER-clause ,尤其是带有Rows - 子句的部分。