Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 如何使用SQL查询计算表中同一列的运行差异?_Sql Server 2008 - Fatal编程技术网

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

Sql server 2008 如何使用SQL查询计算表中同一列的运行差异?,sql-server-2008,Sql Server 2008,我有如下表结构,数据如下 ReadingDate Unit 01-05-2011 10 01-06-2011 20 01-07-2011 40 01-08-2011 40 我想用T-Sql查询得到以下结果。我正在使用SQLServer2008R2 ReadingDate Unit UnitConsumed 01-05-2011 10 10 01-06-2011 20 10 01-07-2

我有如下表结构,数据如下

ReadingDate   Unit
01-05-2011    10 
01-06-2011    20 
01-07-2011    40 
01-08-2011    40  
我想用T-Sql查询得到以下结果。我正在使用SQLServer2008R2

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

您可以尝试以下方法:

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

简单明了

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

回答您的问题时,需要更多关于unitconsumed列数据来源的信息。哦,我知道这是日期之间的差异计算。@Mohammad Shamim,我的荣幸!