如何更新SQL Server 2005中的不同列?

Anj*_*ali 0 sql replace sql-server-2005 distinct sql-update

在我的表中,我有一个Segment_No重复的列.现在我想更新那些重复项.

表

例如:值249X5601存在于两行中.我想将第二个值更改为249X5601R

Dam*_*ver 5

一般形式如下:

;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
Run Code Online (Sandbox Code Playgroud)

在哪里<Suitable_Column>给列定义哪一行是"第一",哪一行是第二行.<New_Value>定义如何Segment_no计算新值,并rn给出行号 - 所以where子句忽略"第一"行.

因此,如果最多只有两行共享一个Segment_no值,并且"first"是具有最低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
Run Code Online (Sandbox Code Playgroud)