Pues eso amig@s,
Para buscar registros duplicados en una tabla de oracle, con la siguiente consulta podremos saber cuantos registros hay duplicados por cada columna:
SELECT COL_A_COMPROBAR, COUNT(COL_A_COMPROBAR)
FROM NOMBRE_TABLA
GROUP BY COL_A_COMPROBAR
HAVING COUNT(COL_A_COMPROBAR) > 1
Tambien pueden añadir campos a la consulta para identificar mas los datos de las lineas duplicadas, solo basta con agregar las columnas separadas con una coma en el SELECT y luego respetar el orden en el group by (COL2, COL3, COL4):
SELECT COL_A_COMPROBAR, COUNT(COL_A_COMPROBAR), COL2, COL3, COL4
FROM NOMBRE_TABLA
GROUP BY COL_A_COMPROBAR,COL2, COL3, COL4
HAVING COUNT(COL_A_COMPROBAR) > 1
Añadido el 28/3/2012:
En caso de que tengamos espacios en blanco, las anteriores consultas no muestran resultados por que el valor a comprobar de la columna COL_A_COMPROBAR en el having es distinto por lo que lo considera otro registro y no encuentra la duplicidad. Para encontrar registris duplicados con espacios podemos utilizar el comando LTRIM o RTRIM segun de que lado estén los espacios (izquierda o derecha).
Espacios a la izquierda:
SELECT Ltrim (COL_A_COMPROBAR), COUNT(COL_A_COMPROBAR)
FROM NOMBRE_TABLA
GROUP BY Ltrim (COL_A_COMPROBAR)
HAVING COUNT (Ltrim (COL_A_COMPROBAR)) > 1
Espacios a la derecha:
SELECT Rtrim (COL_A_COMPROBAR), COUNT(COL_A_COMPROBAR)
FROM NOMBRE_TABLA
GROUP BY Rtrim (COL_A_COMPROBAR)
HAVING COUNT (Rtrim (COL_A_COMPROBAR)) > 1
Otra opción buscando por ROWID
Select count(*) From Mitabla
Where Rowid In
(Select Rowid
From (Select Rowid,
ROW_NUMBER() Over (
Partition By fecha || matricula
Order By fecha || matricula
) nbLines
From Mitabla) t2
Where nbLines > 1);
Esta query devolverá todos aquellos registros que están duplicados por fecha y matricula (siempre y cuando estos sean valores comunes).
Espero que les resulte util.
Salu2.
Buscar registros duplicados en ORACLE.
-
Base de datos
,
Brico
,
Cursos Paso a Paso
,
Noticias
,
Oracle
Edit
5 comentarios:
Super útil estas sentencias.. Gracias por compartirlo.!!
Muchas gracias, me fue muy útil tu aporte.
I have read some just right stuff here. Certainly price bookmarking for revisiting. I wonder how so much attempt you place to create such a excellent informative web site. gmail log in
Excelente!!
Muchas gracias por compartir.
Greetings from Ohio! I'm bored to tears at work so I decided to browse your blog on my iphone during lunch break. I love the info you provide here and can't wait to take a look when I get home. I'm surprised at how fast your blog loaded on my mobile .. I'm not even using WIFI, just 3G .. Anyhow, awesome site! facebook sign in
Publicar un comentario