sql查询将前一个值添加到下一个值[重复]

Posted

技术标签:

【中文标题】sql查询将前一个值添加到下一个值[重复]【英文标题】:sql query adding previous value to next value [duplicate] 【发布时间】:2014-08-29 05:28:35 【问题描述】:

我想添加我的表的两列值例如:

 Id Distance    Duration    ETA_Distance    ETA_Duration
 1  0             0           20                60
 2  14           20           NULL              NULL
 3  12           10           NULL              NULL
 4  15           70           NULL              NULL

考虑到上面的表格,我想要一个 SQL 查询,结果如下:

 Id Distance    Duration    ETA_Distance    ETA_Duration
 1  0             0           20                60
 2  14           20           34                80
 3  12           10           46                90
 4  15           70           61                160

【问题讨论】:

值从何而来? 见Calculating simple running totals in SQL Server 感谢 TechDo。你的链接对我有用.. 【参考方案1】:

Mohan,请参阅下面的答案,它应该对您有所帮助。 将@table 替换为您的表格。 我使用临时表只是为了测试代码。

Declare @tab table (Id int,Distance int,   Duration int,    ETA_Distance int,   ETA_Duration int)
Insert into @tab values 
(1,0 ,  0,20  ,60  ),
(2,14, 20,NULL,NULL),
(3,12, 10,NULL,NULL),
(4,15, 70,NULL,NULL)


Select  X.Id,X.Distance,X.Duration,
        Y.ETA_Distance,Y.ETA_Duration
From    @tab X
Join    (
Select  B.Id,
        Sum(A.Distance) ETA_Distance,
        Sum(A.Duration) ETA_Duration 
From    (Select Id,ISNULL(ETA_Distance,Distance) Distance,ISNULL(ETA_Duration,Duration) Duration From @tab) A,
        (Select Id,ISNULL(ETA_Distance,Distance) Distance,ISNULL(ETA_Duration,Duration) Duration  From @tab) B
Where   A.Id <= B.Id
Group   By B.Id) Y
On      X.Id = Y. Id

结果:

Sql 可能看起来很长,但逻辑很简单。

【讨论】:

+1 这是该示例的链接SQL Fiddle

以上是关于sql查询将前一个值添加到下一个值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

SQL - 更新查询 - 更新到下一个不为 NULL 的日期值

sql合并重复的字段

SQL数据库,select两个字段的非重复值并且排序

用sql语句查找某一行的一个值并返回那个值,怎么写? 请将详细点 ,谢谢

sql中如何查看某一字段值有几个数值

oracle 查询字段值重复sql语句