@
leyendo...
Tecnología

Encontrando duplicados en SQL Server 2008 R2

Hola a todos. Aprovecho una situación que se me presentó hace poco para tratar con unos duplicados y como eliminarlos.

Como hacemos varios, por no decir todos, me encontré luego de buscar en Internet con este artículo técnico de Microsoft Support. Me pareció bastante útil, aunque un poco tedioso porque involucra la creación de una tabla, entre otras cosas. Luego, llegué a este post en el blog de Pinal Dave y me pareció más elegante e incluso más directo.

En esencia, lo que Pinal Dave propone es usar una Common Table Expression y la función ROW_NUMBER() para obtener estos duplicados. El código, tomado del post del blog de Pinal Dave es el siguiente:

— Delete Duplicate records…
WITH CTE (COl1,Col2, DuplicateCount)
AS
(
SELECT COl1,Col2,
ROW_NUMBER() OVER(PARTITION BY COl1,Col2 ORDER BY Col1) AS DuplicateCount
FROM DuplicateRcordTable
)
DELETE
FROM CTE
WHERE DuplicateCount > 1
GO

Para validar cuantos registros duplicados tienen en la CTE, en lugar del DELETE, hagan un SELECT y ahí lo que van a ver es por registro el número de veces que éste está en la tabla. Recuerden ajustar el código de acuerdo con sus necesidades.

Me fue muy útil y espero que para ustedes, cuando tengan una situación similar, también lo sea.

Saludos.

Comentarios

Los comentarios están cerrados.

Categorías

Archivos

A %d blogueros les gusta esto: