从第2行列字段更新第1行列字段

问题描述 投票:-2回答:2

如何从以下方案更新表

表:DIM_SCLASS

SCLASS_CODE | GL_CLASS_CODE | RPT_GRP | UW_YEAR_START| UW_YEAR_END
PA01        | 06            | P       |  1900        | 2017
PA01        | 06            | P       |  1900        | 2020
PA01        | 05            | V       |  2021        | 2500        

我的问题:1。如何从ROW 1 UW_YEAR_END更新ROW 2 UW_YEAR_START值?

请在scenario.enter image description here上找到上面的图片

sql sql-server
2个回答
0
投票

这将更新所有行。如果需要,添加WHERE子句以限制更新哪些行。

UPDATE d
SET d.UW_YEAR_START = LAG(d.UW_YEAR_END,1) OVER (ORDER BY d.UW_YEAR_END asc)
FROM DIM_SCLASS d

0
投票

你应该可以通过加入来做到这一点。尝试这样的事情:

update DIM_SCLASS 
set r1.UW_YEAR_START = r2.UW_YEAR_START
FROM DIM_SCLASS r1
join DIM_SCLASS r2
on r1.SCLASS_CODE = r1.SCLASS_CODE -- YOU CAN USE 1 = 1 OR SOME OTHER CONDITION IF NECESSARY
where r1.ROW_NUMBER() = 1
AND r2.ROW_NUMBER() = 2;
© www.soinside.com 2019 - 2024. All rights reserved.