Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Премахване на дублиращи се редове (въз основа на стойности от множество колони) от SQL таблица

Примерна SQL FIDDLE

1) Използвайте CTE, за да получите запис за максимална стойност на кода на кораб въз основа на ARDivisionNo, CustomerNofor всеки клиент

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) За да изтриете записа, използвайте заявка Delete вместо Select и променете Where Clause на rn> 1. Примерна 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. Получавате всички имена на таблици на конкретна база данни чрез SQL заявка?

  2. Условна клауза WHERE в SQL Server

  3. Как мога да се свържа със SQL Server, използвайки интегрирана защита с JDBC драйвер?

  4. Как да се свържа с MS SQL Server с помощта на Inno Setup?

  5. Как да се свържа с mssql с помощта на pdo през PHP и Linux?