Ver Mensaje Individual
  #11 (permalink)  
Antiguo 07/01/2013, 09:57
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Consultas registros duplicados en SQL

i got it :) si quieres sacar unicamente los que no tiene repetidos(para insertarlos puedes usar este query)

Código SQL:
Ver original
  1. CREATE TABLE #temp (
  2. dato1 INT,
  3. dato2 INT,
  4. campo1 VARCHAR(20),
  5. campo2 VARCHAR(20),
  6. campo3 VARCHAR(20)
  7. )
  8.  
  9.  
  10. INSERT INTO #temp VALUES (1,1,'a','b','c')
  11. INSERT INTO #temp VALUES (2,1,'a1','b1','c1')
  12. INSERT INTO #temp VALUES (3,1,'a2','b2','c2')
  13. INSERT INTO #temp VALUES (1,1,'a3','b3','c3')
  14. INSERT INTO #temp VALUES (1,1,'a4','b4','c4')
  15. INSERT INTO #temp VALUES (2,1,'a5','b5','c5')
  16.  
  17. SELECT * FROM #temp WHERE CONVERT(VARCHAR(20),dato1) + '|' + CONVERT(VARCHAR(20),dato2) IN(
  18. SELECT CONVERT(VARCHAR(20),dato1) + '|' + CONVERT(VARCHAR(20),dato2) FROM #temp GROUP BY dato1,dato2 HAVING COUNT(*)=1)

Esto te regresa en este ejemplo:

3,1,'a2','b2','c2'

ahora si quieres saber cuales son los que tiene repetidos:


Código SQL:
Ver original
  1. SELECT * FROM #temp WHERE CONVERT(VARCHAR(20),dato1) + '|' + CONVERT(VARCHAR(20),dato2) IN(
  2. SELECT CONVERT(VARCHAR(20),dato1) + '|' + CONVERT(VARCHAR(20),dato2) FROM #temp GROUP BY dato1,dato2 HAVING COUNT(*)>1)

con este query obtienes los que estan repetidos, ahora ya depende de si quieres que nada mas se inserte un registro de estos o ninguno o cual de ellos vas a insertar o no se si todos los que repiten id tengan los mismos valores en los demas campos.

espero que esto resuelva tu question :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me