sql >> Databáze >  >> RDS >> Sqlserver

Odstranění duplicitních řádků (na základě hodnot z více sloupců) z tabulky SQL

Ukázka SQL FIDDLE

1) Použijte CTE k získání záznamu maximální hodnoty kódu lodi na základě ARDivisionNo, CustomerNopro každého zákazníka

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) Chcete-li smazat záznam, použijte Delete query namísto Select and change Where Clause to rn> 1. Ukázkový 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. Jaký je nejlepší rámec vysoké dostupnosti PostgreSQL? PAF vs. repmgr vs. Patroni Infographic

  2. Nelze použít připojení MySQL pro rámec entity 6

  3. Jak LEFT() funguje v MariaDB

  4. SQL Server v.Next:Výkon STRING_AGG().