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

Xóa các hàng trùng lặp (dựa trên giá trị từ nhiều cột) khỏi bảng SQL

FIDDLE SQL mẫu

1) Sử dụng CTE để nhận bản ghi giá trị mã tàu tối đa dựa trên ARDivisionNo, CustomerNofor từng Khách hàng

WITH cte AS (
  SELECT*, 
     row_number() OVER(PARTITION BY ARDivisionNo, CustomerNo ORDER BY ShipToCode desc) AS [rn]
  FROM t
)
Select * from cte WHERE [rn] = 1

2) Để xóa bản ghi, hãy sử dụng Xóa truy vấn thay vì Chọn và thay đổi Mệnh đề Trường hợp thành rn> 1. Mẫu SQL FIDDLE

WITH cte AS (
  SELECT*, 
     row_number() OVER(PARTITION BY ARDivisionNo, CustomerNo ORDER BY ShipToCode desc) AS [rn]
  FROM t
)
Delete from cte WHERE [rn] > 1;

select * from t;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thêm cột vào bảng hiện có trong cơ sở dữ liệu SQL Server

  2. MVC4:UserIsInRole - Không thể kết nối với cơ sở dữ liệu SQL Server

  3. Cách bắt các ngoại lệ hết thời gian chờ của SQLServer

  4. Kết thúc hỗ trợ cho SQL Server 2008 &2008 R2

  5. YEAR () Ví dụ trong SQL Server (T-SQL)