sql >> Databasteknik >  >> RDS >> Sqlserver

Ta bort dubbletter av rader (baserat på värden från flera kolumner) från SQL-tabellen

Exempel på SQL-FIDDLE

1) Använd CTE för att få maxvärde för leveranskod baserat på ARDivisionNo, CustomerNo för varje kund

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) För att ta bort posten använd Ta bort fråga istället för Välj och ändra Where-sats till rn> 1. Exempel på 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. MariaDB JSON_VALUE() vs JSON_QUERY():Vad är skillnaden?

  2. Hur man skapar en ADDM-uppgift och kontrollerar dess rapport

  3. SQL:skillnad mellan två datum

  4. Dela upp kommaseparerade värden för en kolumn i rad genom Oracle SQL-fråga