sql >> データベース >  >> RDS >> Sqlserver

重複行の名前を変更

    With Dups As
        (
        Select Id, Name
            , Row_Number() Over ( Partition By Name Order By Id ) As Rnk
        From Table
        )
    Select D.Id
        , D.Name + Case
                    When D.Rnk > 1 Then ' (' + Cast(D.Rnk As varchar(10)) + ')'
                    Else ''
                    End As Name
    From Dups As D
    

    update ステートメントが必要な場合は、ほとんど同じ構造を使用できます:

    With Dups As
        (
        Select Id, Name
            , Row_Number() Over ( Partition By Name Order By Id ) As Rnk
        From Table
        )
    Update Table
    Set Name = T.Name + Case
                        When D.Rnk > 1 Then ' (' + Cast(D.Rnk As varchar(10)) + ')'
                        Else ''
                        End
    From Table As T
        Join Dups As D
            On D.Id = T.Id
    


    1. 表形式でデータを表示する方法

    2. フィルター時間

    3. MySQL-テーブルの作成中に一緒に使用された場合のPRIMARYKEY、UNIQUE KEY、およびKEYの意味

    4. MySQLで初期値と自動インクリメントを設定するにはどうすればよいですか?