Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Đổi tên các hàng trùng lặp

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

Nếu bạn muốn một câu lệnh cập nhật, bạn có thể sử dụng cấu trúc khá giống nhau:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không hỗ trợ OVER trong MS SQL Server 2005?

  2. Nhận danh sách tài khoản thư cơ sở dữ liệu trong SQL Server (T-SQL)

  3. Ai đó có thể giải thích sự khác biệt giữa hai truy vấn?

  4. Thu thập số lượng từ một truy vấn SQL

  5. Số lượng tích lũy SQL