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

[SOLUCIONADO] Actualizar 0 por numero consecutivo

Estas en el tema de Actualizar 0 por numero consecutivo en el foro de SQL Server en Foros del Web. Hola buenas tardes. Es posible utilizar un update para actualizar un campo que tiene 0 con una serie de numero consecutivos si cumple una condición ...
  #1 (permalink)  
Antiguo 22/09/2014, 13:41
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 10 años, 11 meses
Puntos: 5
Actualizar 0 por numero consecutivo

Hola buenas tardes.

Es posible utilizar un update para actualizar un campo que tiene 0 con una serie de numero consecutivos si cumple una condición antes.

Por ejemplo

Así tengo los datos.

CODIGO ACT NOMBRE
A2001 0 JUAN
A2001 0 MARGARITA
A2001 0 ALEJANDRO
A2002 0 BERENICE
A2002 0 VALERIA

Y lo que quiero esque me tome los rangos de el codigo y empiece a enumerar EL ACT
A2001 1 JUAN
A2001 2 MARGARITA
A2001 3 ALEJANDRO
A2002 1 BERENICE
A2002 2 VALERIA


Es esto posible
  #2 (permalink)  
Antiguo 22/09/2014, 13:58
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Actualizar 0 por numero consecutivo

Código SQL:
Ver original
  1. CREATE TABLE #NOMBRES (CODIGO CHAR(5), ACT INT, NOMBRE VARCHAR(30))
  2.  INSERT INTO #NOMBRES VALUES ('A2001', 0 ,'JUAN0')
  3.  INSERT INTO #NOMBRES VALUES ('A2001', 0 ,'MARGARITA')
  4.  INSERT INTO #NOMBRES VALUES ('A2001', 0 ,'ALEJANDRO')
  5.  INSERT INTO #NOMBRES VALUES ('A2002', 0 ,'BERENICE')
  6.  INSERT INTO #NOMBRES VALUES ('A2002', 0 ,'VALERIA')
  7.  
  8.  
  9. SELECT ROW_NUMBER() OVER (partition BY CODIGO ORDER BY CODIGO) rn, CODIGO FROM #NOMBRES
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 22/09/2014, 14:04
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 10 años, 11 meses
Puntos: 5
Respuesta: Actualizar 0 por numero consecutivo

La sentencia
Código SQL:
Ver original
  1. SELECT ROW_NUMBER() OVER (partition BY CODIGO ORDER BY CODIGO) rn, CODIGO FROM #NOMBRES
Código ERROR SQL:
Ver original
  1. Mens. 195, Nivel 15, Estado 10, Línea 1
  2. 'ROW_NUMBER' no es un nombre de función reconocido.

Porque tengo SQL Server 2000
  #4 (permalink)  
Antiguo 22/09/2014, 14:10
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Actualizar 0 por numero consecutivo

Graso problema.....

Buscando en mis viejos, muy viejos archivos, me encontré esta rutina para la versión 2000, ¿puedes adecuarla a lo que necesitas?

Código SQL:
Ver original
  1. CREATE TABLE #ciudades(
  2. PAIS VARCHAR(20) NOT NULL,
  3. CIUDAD VARCHAR(20) NOT NULL
  4. )
  5. GO
  6.  
  7. INSERT INTO #ciudades(PAIS, CIUDAD)
  8. VALUES('MEXICO', 'MONTERREY')
  9. INSERT INTO #ciudades(PAIS, CIUDAD)
  10. VALUES('MEXICO', 'GUADALAJARA')
  11. INSERT INTO #ciudades(PAIS, CIUDAD)
  12. VALUES('MEXICO', 'DISTRITO FEDERAL')
  13. INSERT INTO #ciudades(PAIS, CIUDAD)
  14. VALUES('MEXICO', 'TIJUANA')
  15. INSERT INTO #ciudades(PAIS, CIUDAD)
  16. VALUES('ESPAÑA', 'VALENCIA')
  17. INSERT INTO #ciudades(PAIS, CIUDAD)
  18. VALUES('ESPAÑA', 'MADRID')
  19. INSERT INTO #ciudades(PAIS, CIUDAD)
  20. VALUES('ESPAÑA', 'BARCELONA')
  21. INSERT INTO #ciudades(PAIS, CIUDAD)
  22. VALUES('ITALIA', 'ROMA')
  23. INSERT INTO #ciudades(PAIS, CIUDAD)
  24. VALUES('ITALIA', 'MILAN')
  25. GO
  26.  
  27. SELECT PAIS, (SELECT COUNT(*)
  28. FROM #ciudades AS I
  29. WHERE I.PAIS=J.PAIS
  30. AND I.CIUDAD>=J.CIUDAD) AS No
  31. , CIUDAD
  32. FROM #ciudades AS J
  33. ORDER BY PAIS, No
  34. GO
__________________
MCTS Isaias Islas

Última edición por iislas; 22/09/2014 a las 14:21
  #5 (permalink)  
Antiguo 22/09/2014, 14:21
Avatar de 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: Actualizar 0 por numero consecutivo

http://social.msdn.microsoft.com/For...um=transactsql
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 22/09/2014, 14:35
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Actualizar 0 por numero consecutivo

Veamos:


Código SQL:
Ver original
  1. SELECT CODIGO, (SELECT COUNT(*)
  2. FROM #NOMBRES AS I
  3. WHERE I.CODIGO=J.CODIGO
  4. AND I.NOMBRE>=J.NOMBRE) AS No
  5. , NOMBRE
  6. FROM #NOMBRES AS J
  7. ORDER BY CODIGO, No
__________________
MCTS Isaias Islas
  #7 (permalink)  
Antiguo 22/09/2014, 14:43
Avatar de 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: Actualizar 0 por numero consecutivo

A2001 1 MARGARITA
A2001 2 JUAN0
A2001 3 ALEJANDRO
A2002 1 VALERIA
A2002 2 BERENICE


si jala jajajajajaja
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 22/09/2014, 14:45
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Actualizar 0 por numero consecutivo

Of course my friend......yeaaaaaahhhhh
__________________
MCTS Isaias Islas
  #9 (permalink)  
Antiguo 22/09/2014, 14:53
Avatar de aid_val  
Fecha de Ingreso: mayo-2013
Ubicación: Guanajuato
Mensajes: 302
Antigüedad: 10 años, 11 meses
Puntos: 5
Respuesta: Actualizar 0 por numero consecutivo

Gracias Sr. Islas si funciona solo necesito ver como lo adecuo para hacer una actualización.
  #10 (permalink)  
Antiguo 22/09/2014, 15:16
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Actualizar 0 por numero consecutivo

De nada, te paso el código, reemplaza TUTABLA, por una tabla de pruebas que tenga los datos.

Código SQL:
Ver original
  1. UPDATE TUTABLA SET TUCOLUMNA = X.NUMERO
  2. FROM TUTABLA TT JOIN (
  3. SELECT CODIGO, (SELECT COUNT(*)
  4. FROM TUTABLA AS I
  5. WHERE I.CODIGO=J.CODIGO
  6. AND I.NOMBRE>=J.NOMBRE) AS NUMERO
  7. , NOMBRE
  8. FROM TUTABLA AS J
  9. ORDER BY CODIGO, No) AS X
  10. ON TT.CODIGO = X.CODIGO
  11. AND TT.NOMBRE = X.NOMBRE
__________________
MCTS Isaias Islas

Etiquetas: consecutivo, numero
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




La zona horaria es GMT -6. Ahora son las 00:47.