Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Comparar registros

Estas en el tema de Comparar registros en el foro de SQL Server en Foros del Web. Buen dia: Tengo sqlserver 2005 y tengo la necesidad de solucionar este problema, si hay alguien que me puedes orientar. Deseo de una lista de ...
  #1 (permalink)  
Antiguo 06/02/2013, 13:08
 
Fecha de Ingreso: febrero-2013
Mensajes: 1
Antigüedad: 5 años, 9 meses
Puntos: 1
Comparar registros

Buen dia:
Tengo sqlserver 2005 y tengo la necesidad de solucionar este problema, si hay alguien que me puedes orientar. Deseo de una lista de nombres(TABLA) agregarle una columna que se incremente su valor cuando su anterior registro sea diferente. Ejemplo:
NOMBRE NÚMERO
LUIS 1
LUIS 1
FELIPE 2
FELIPE 2
FELIPE 2
ANA 3
ANA 3
LUIS 4
ALMA 5
ALMA 5
FELIPE 6
Muchas gracias de antemano. Saludos.
  #2 (permalink)  
Antiguo 06/02/2013, 13:30
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.319
Antigüedad: 12 años, 3 meses
Puntos: 760
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

Etiquetas: registro, registros, server, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:17.