【发布时间】:2019-08-01 18:22:56
【问题描述】:
我有一张这样的桌子
ID YEAR VALUE
----------------------
1 2017 1
1 2018 8
1 2019 0
1 2020 6
1 2021 2
我正在尝试将所有先前行 VALUE 列值添加到当前行 VALUE 列值并显示总计。我的结果应该如下:
ID YEAR VALUE TOTAL
----------------------------
1 2017 1 1
1 2018 8 9
1 2019 0 9
1 2020 6 15
1 2021 2 17
我尝试使用 join 和 row_number 来获得这个,但 0 的 2019 值搞砸了。
select *, row_number() over (partition by ID order by YEAR) as RN
into #t1
from tbl
select
t1.VALUE + ISNULL(t2.VALUE, 0),
t1.*
from #t1 as t1
left join #t1 as t2 on t2.ID = t1.ID and (t2.RN + 1) = t1.RN
我通过这个查询得到的结果是:
ID YEAR VALUE TOTAL
----------------------------
1 2017 1 1
1 2018 8 9
1 2019 0 8
1 2020 6 6
1 2021 2 8
有什么帮助吗?
【问题讨论】:
标签: sql-server sql-server-2008-r2 common-table-expression row-number