東西,如果你有窗函數
Declare @Table table (ID int,Name varchar(25),Length int,Distance int)
Insert into @Table values
(1,'AB1',100,3600),
(2,'AB2',50,0),
(3,'AB3',100,0),
(4,'AB4',50,0),
(5,'AB5',100,0),
(6,'AB6',50,0)
Select ID,Name,Length
,Distance = sum(IIF(Distance>0,Distance,Length)) over (Order by ID)
From @Table
返回
ID Name Length Distance
1 AB1 100 3600
2 AB2 50 3650
3 AB3 100 3750
4 AB4 50 3800
5 AB5 100 3900
6 AB6 50 3950
這是2008年的版本 - 返回同上
Declare @Table table (ID int,Name varchar(25),Length int,Distance int)
Insert into @Table values
(1,'AB1',100,3600),
(2,'AB2',50,0),
(3,'AB3',100,0),
(4,'AB4',50,0),
(5,'AB5',100,0),
(6,'AB6',50,0)
Select A.ID
,A.Name
,A.Length
,Distance = Sum(case when B.Distance>0 then B.Distance else B.Length end)
From @Table A
Join @Table B on (B.ID<=A.ID)
Group By A.ID
,A.Name
,A.Length
Order By 1
如果你有興趣,我也有
Select [dbo].[udf-Date-Elapsed](@Date1,@Date2)
返回
002:16:00:00 -- Or 2 Day 16 Hours 0 Minutes
哪個RDBMS這是爲了什麼?請添加一個標籤來指定您是使用'mysql','postgresql','sql-server','oracle'還是'db2' - 或者其他的東西。 –
這會更好地描述爲使用前面的*行*來計算(一列)當前*行*的值。 –