如何用SQL查询计算表中同一列的运行差异?

时间:2011-06-04 12:15:11

标签: sql-server-2008

我有以下表结构,数据为

ReadingDate   Unit
01-05-2011    10 
01-06-2011    20 
01-07-2011    40 
01-08-2011    40  

我想用T-Sql查询得到以下结果。我使用的是sql server 2008 R2

  ReadingDate   Unit   UnitConsumed 
    01-05-2011    10      10
    01-06-2011    20      10
    01-07-2011    40      20
    01-08-2011    40      0

2 个答案:

答案 0 :(得分:1)

您可以尝试以下方法:

With tblDifference as
(
    Select Row_Number() OVER (Order by ReadingDate) as RowNumber,ReadingDate,Unit from  TestTable
)

Select Cur.ReadingDate, Cur.Unit, ISNULL((Cur.Unit-Prv.Unit),Cur.Unit) as UnitConsumed
from tblDifference Cur 
Left Outer Join tblDifference Prv 
On Cur.RowNumber=Prv.RowNumber+1

简单明了!

答案 1 :(得分:0)

这可以在SQL Server中使用LAG函数完成。参见LAG function