Ver Mensaje Individual
  #15 (permalink)  
Antiguo 07/01/2013, 13:39
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

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. CREATE TABLE #temp3 (
  10. dato1 INT,
  11. dato2 INT,
  12. campo1 VARCHAR(20),
  13. campo2 VARCHAR(20),
  14. campo3 VARCHAR(20)
  15. )
  16.  
  17.  
  18. INSERT INTO #temp VALUES (1,1,'a','b','c')
  19. INSERT INTO #temp VALUES (2,1,'a1','b1','c1')
  20. INSERT INTO #temp VALUES (3,1,'a2','b2','c2')
  21. INSERT INTO #temp VALUES (1,1,'a3','b3','c3')
  22. INSERT INTO #temp VALUES (1,1,'a4','b4','c4')
  23. INSERT INTO #temp VALUES (2,1,'a5','b5','c5')
  24.  
  25.  
  26. SELECT dato1,dato2,IDENTITY(INT,1,1) AS rn INTO #temp2 FROM #temp GROUP BY dato1,dato2
  27.  
  28.  
  29. DECLARE @x INT
  30. DECLARE @y INT
  31. DECLARE @clave VARCHAR(20)
  32.  
  33. SET @x=1
  34. SET @clave=''
  35. while @x<=(SELECT COUNT(*) FROM #temp2)
  36. BEGIN
  37.     SELECT @clave=CONVERT(VARCHAR(20),dato1) + '|' + CONVERT(VARCHAR(20),dato2) FROM #temp2 WHERE rn=@x
  38.     INSERT INTO #temp3
  39.     SELECT top 1 * FROM #temp WHERE CONVERT(VARCHAR(20),dato1) + '|' + CONVERT(VARCHAR(20),dato2) = @clave
  40.     SET @x=@x+1
  41. END
  42.  
  43. SELECT * FROM #temp3
  44. DROP TABLE #temp2
  45. DROP TABLE #temp3

eso te regresa :

1 1 a b c
2 1 a1 b1 c1
3 1 a2 b2 c2

que es lo que necesitas no??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me