添加第1行和第2行,然后第2行和第3行..使用SQL

时间:2018-03-05 11:02:45

标签: sql-server

我在SqlServer中有一个表,它有一列

E.g:

AvgCall

6.25
6.25
10
12.5
24.5
6
9
3

现在通过使用这些数据我想得到如下所示的结果。

AvgCall                        NewColumn

6.25                           6.25
6.25                           12.5
10                             16.25
12.5                           22.5
24.5                           37
6                              30.5
9                              15
3                              12

因此在输出中NewColumn由逻辑添加,即第一行数据作为第一行,然后添加第一行+第二行,然后第二行+第三行。

如何获得我的结果?

3 个答案:

答案 0 :(得分:1)

如果您使用的是sqlserver 2012,还可以使用下面的导致

select col1,col1+lead(col1) over (order by <<some orderring col>>)
from 
tbl

答案 1 :(得分:1)

对于SQL版 LOWER 而不是2012年,请使用:

; WITH T(Nums) as
    (
    SELECT 6.25
    UNION ALL
    SELECT 6.25
    UNION ALL
    SELECT 10
    UNION ALL
    SELECT 12.5
    UNION ALL
    SELECT 24.5
    UNION ALL
    SELECT 6
    UNION ALL
    SELECT 9
    UNION ALL
    SELECT 3
    ), Main as
    (
    SELECT ROW_NUMBER () OVER (ORDER BY (SELECT NULL)) Id,  * 
    FROM T
    )

    SELECT a.Nums , A.Nums +  ISNULL((SELECT MAX(b.Nums) FROM Main b WHERE b.Id =  a.Id-1 ),0) Col
    FROM Main a 

答案 2 :(得分:0)

你可以使用LAG

    create table #tmp(AvgCall FLOAT)

    insert into #tmp
    SELECT 6.25
    union ALL
    SELECT 6.25
    union ALL
    SELECT 10
    union ALL
    SELECT 12.5
    union ALL
    SELECT 24.5
    union ALL
    SELECT 6
    union ALL
    SELECT 9
    union ALL
    SELECT 3

    ;with cte
    AS( 
        Select ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS rownum, * from #tmp 
    )

    select AvgCall+ISNULL(LAG(AvgCall) OVER(order by rownum),0)
    from cte

    drop table #tmp