Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Usuwanie zduplikowanych wierszy (na podstawie wartości z wielu kolumn) z tabeli SQL

Przykładowa skrzynka SQL

1) Użyj CTE, aby uzyskać rekord maksymalnej wartości kodu wysyłki na podstawie ARDivisionNo, CustomerNodla każdego klienta

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) Aby usunąć rekord, użyj zapytania Usuń zamiast Wybierz i zmień klauzulę Where na rn> 1. Przykładowa skrzynka SQL

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. Sprawdź/zmień poziom zgodności bazy danych w SQL Server (SSMS)

  2. Unikaj nazywania procedur przechowywanych przez użytkownika SP% lub SP_%

  3. Zwróć wszystkie grupy plików dla bieżącej bazy danych w SQL Server

  4. Rozwiązywanie problemów z długimi zapytaniami w MS SQL Server

  5. Koniec wsparcia dla SQL Server 2008 i 2008 R2