我有以下表结构,数据为
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
答案 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。