SQL Server - Tratamiento de registros duplicados SQL SERVER 2008

 
Vista:
sin imagen de perfil

Tratamiento de registros duplicados SQL SERVER 2008

Publicado por Elías (10 intervenciones) el 10/11/2014 17:57:16
Buenos días, amigos:

Estuve partiéndome la cabeza con este tema, hay mucha información, pero disgregada y poco acertada. Espero que mi experiencia les sirva de algo.

Tengo una tabla con casi dos millones de registros en los que pude detectar duplicados haciendo.
1
2
3
4
5
6
Select
                      fecha, hora,phonecliente,phonedespachador
 from llamadas
having count(*)>1
group by
                      fecha, hora,phonecliente,phonedespachador order by phonedespachador asc.


Por alguna razón la aplicación está duplicando registros, no es el caso resolverla, por asuntos de copy right, pero si el hecho de que si existen 3 registros repetidos, deben eliminarse dos y quedar sólo uno.

El asunto es que navegando por la red me encontré el siguiente arto. para SQL 2005 de Pinal Dave quien utiliza el siguiente script para borrar registros duplicados(ya adaptada a mi tabla):

1
2
3
4
5
6
7
8
9
10
11
WITH CTE (fecha, hora,phonecliente,phonedespachador, Duplicados)
AS
(
SELECT fecha, hora,phonecliente,phonedespachador,
ROW_NUMBER() OVER(PARTITION BY fecha, hora,phonecliente,phonedespachador ORDER BY phonedespachador) AS Duplicados
FROM llamadas
)
DELETE
FROM CTE
WHERE Duplicados > 1
GO

en mi caso hice una modificación muy breve y en la parte de delete escribí lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
WITH CTE (fecha, hora,phonecliente,phonedespachador, Duplicados)
AS
(
SELECT fecha, hora,phonecliente,phonedespachador,
ROW_NUMBER() OVER(PARTITION BY fecha, hora,phonecliente,phonedespachador ORDER BY phonedespachador) AS Duplicados
FROM llamadas
)Select distinct
	fecha, hora,phonecliente,phonedespachador
into REG_EXDUPLICADOS
FROM CTE
WHERE Duplicados > 1

Esto para efectos de asegurar el borrado de los registros sin perderlos y aprovechando para garantizar la unicidad de los mismos.

Luego de eso, borraré los duplicados de mi tabla inicial y re-insertaré los registros únicos que antes estaban duplicados, usando la versión que contiene el delete.

Dudas, recomendaciones y comentarios son bienvenidos. Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Tratamiento de registros duplicados SQL SERVER 2008

Publicado por jams (93 intervenciones) el 13/11/2014 17:59:34
Buenos dias , el scrip que encontraste en internet funciona y funciona bien, desde mi punto de vista estas haciendo procesos de mas que solamente te tomara mayor tiempo hacer.


Mi pregunta es cual es tu duda por la que quieres que alguien te de su punto de vista?



Saludos y Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Tratamiento de registros duplicados SQL SERVER 2008

Publicado por Elías (10 intervenciones) el 13/11/2014 18:24:26
Pues me ayudaría mucho que me indiques qué estoy haciendo de más, porque efectivamente la consulta está tardando mucho. Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar