在我的表中,我有一列Segment_No
有重复项。现在我想更新那些重复项。
例如:值249X5601出现在两行中。我想将第二个值更改为249X5601R
在我的表中,我有一列Segment_No
有重复项。现在我想更新那些重复项。
例如:值249X5601出现在两行中。我想将第二个值更改为249X5601R
一般形式如下:
;with AllRows as (
select Donation_ID,Registration_No,Segment_No,
ROW_NUMBER() OVER (
PARTITION BY Segment_No
order by <Suitable_Column>
) as rn
from UnnamedTable
)
update AllRows set Segment_no = <New_Value>
where rn > 1
Where<Suitable_Column>
为列定义了哪一行是“第一行”,哪一行是第二行。<New_Value>
定义应该如何计算新Segment_no
值,并rn
给出行号——所以 where 子句忽略了“第一”行。
因此,如果只有最多两行共享一个Segment_no
值,并且“第一”是具有最低Donation_ID
值的行,那么它将是:
;with AllRows as (
select Donation_ID,Registration_No,Segment_No,
ROW_NUMBER() OVER (
PARTITION BY Segment_No
order by Donation_ID
) as rn
from UnnamedTable
)
update AllRows set Segment_no = Segment_no + 'R'
where rn > 1