Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/02/2013, 13:30
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: Comparar registros

te diria que con row_number pero lo que necesitas es que aumente el numero cuando haya un cambio, aunque los nombres repitan entonces podemos hacer esto:

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. nombre VARCHAR(20)
  4. )
  5.  
  6. CREATE TABLE #resultado
  7. (
  8. nombre VARCHAR(20),
  9. contador INT
  10. )
  11.  
  12. INSERT INTO #temp VALUES ('LUIS')
  13. INSERT INTO #temp VALUES ('LUIS')
  14. INSERT INTO #temp VALUES ('FELIPE')
  15. INSERT INTO #temp VALUES ('FELIPE')
  16. INSERT INTO #temp VALUES ('FELIPE')
  17. INSERT INTO #temp VALUES ('ANA')
  18. INSERT INTO #temp VALUES ('ANA')
  19. INSERT INTO #temp VALUES ('LUIS')
  20. INSERT INTO #temp VALUES ('ALMA')
  21. INSERT INTO #temp VALUES ('ALMA')
  22. INSERT INTO #temp VALUES ('FELIPE')
  23.  
  24. SELECT *,IDENTITY(INT,1,1) rn INTO #temp2 FROM #temp
  25.  
  26. DECLARE @x INT
  27. DECLARE @contador INT
  28. DECLARE @nombre VARCHAR(20)
  29. DECLARE @nombre_ant VARCHAR(20)
  30. SET @x=1
  31. SET @contador=1
  32. while @x<=(SELECT COUNT(*) FROM #temp2)
  33. BEGIN
  34.     SELECT @nombre=nombre FROM #temp2 WHERE rn=@x
  35.     IF @x=1
  36.       SELECT @nombre_ant=nombre FROM #temp2 WHERE rn=1
  37.     ELSE
  38.       SELECT @nombre_ant=nombre FROM #temp2 WHERE rn=@x-1
  39.     IF @nombre<>@nombre_ant
  40.       SET @contador=@contador+1
  41.    
  42.     INSERT INTO #resultado VALUES (@nombre,@contador)
  43.     print @nombre
  44.     print @contador    
  45.     SET @x=@x+1
  46. END
  47.  
  48. SELECT * FROM #resultado

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me