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

Enumerar con cursores

Estas en el tema de Enumerar con cursores en el foro de SQL Server en Foros del Web. Hola amigos, como podria enumerar correctamente una tabla que no tiene indices Cita: 44055 AV 3 DE MAYO S/Nº - Ref: CERCA A 3 ESQUINAS- ...
  #1 (permalink)  
Antiguo 19/09/2012, 14:17
 
Fecha de Ingreso: octubre-2003
Ubicación: Perú
Mensajes: 39
Antigüedad: 21 años, 2 meses
Puntos: 0
Pregunta Enumerar con cursores

Hola amigos, como podria enumerar correctamente una tabla que no tiene indices
Cita:
44055 AV 3 DE MAYO S/Nº - Ref: CERCA A 3 ESQUINAS- VILCACOTO C-000002-2012
44055 AV 3 DE MAYO S/Nº - Ref: CERCA A 3 ESQUINAS- VILCACOTO C-000002-2012
44995 AV 3 DE MAYO S/Nº - Ref: ULTIMO PARADERO DE TRES ESQUINAS C-000003-2012
43709 AV 9 DE DICIEMBRE Nº 1797, CHILCA C-000007-2012
43709 AV 9 DE DICIEMBRE Nº 1797, CHILCA C-000007-2012
43709 AV 9 DE DICIEMBRE Nº 1797, CHILCA C-000007-2012
43709 AV 9 DE DICIEMBRE Nº 1797, CHILCA C-000007-2012
43473 AV CORONEL PARRA Nº 2387, PILCOMAYO C-000008-2012
El campo de formato C0002 debe ser C0001; el C0003 debe ser C0002; así sucesivamente.
__________________
un conocimiento compartido es un conocimiento que evoluciona.
  #2 (permalink)  
Antiguo 19/09/2012, 15:13
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Enumerar con cursores

Dependera de que version estes usando, pero podrias crear un campo IDENTITY y de ahi basarte para crear tu campo o armar tu campo
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 19/09/2012, 15:41
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Enumerar con cursores

con eso obtendrias los C0001, C0002 y asi sucesivamente :)

select select 'C' + replicate('0',len('0000')-len(rn)) + convert(varchar(20),rn) as columna
from(
select *, row_number() over(partition by campo order by campo) as rn
from tabla
group by campos
) t1

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 21/09/2012, 16:40
 
Fecha de Ingreso: octubre-2003
Ubicación: Perú
Mensajes: 39
Antigüedad: 21 años, 2 meses
Puntos: 0
Respuesta: Enumerar con cursores

Hola Libras gracias por la sugerencia, la tabla mostrada en la parte superior tiene 3 campos pero con 90 000 registros; lo que busco es crear una consulta que me actualice(update) el campo codigoC a una correcta numeración como dije C00001, C0002, C003, considero el campo codigo que tiene relación a los grupos así:
TablaX
Cita:
codigo | direccion | codigoC
-------------------------------------------------------------------------------------------------------------
44055 | AV 3 DE MAYO S/Nº - Ref: CERCA A 3 ESQUINAS- VILCACOTO | C-000002-2012
44055 | AV 3 DE MAYO S/Nº - Ref: CERCA A 3 ESQUINAS- VILCACOTO | C-000002-2012
44995 | AV 3 DE MAYO S/Nº - Ref: ULTIMO PARADERO DE TRES ESQUINAS | C-000003-2012
43709 | AV 9 DE DICIEMBRE Nº 1797, CHILCA | C-000007-2012
43709 | AV 9 DE DICIEMBRE Nº 1797, CHILCA | C-000007-2012
43709 | AV 9 DE DICIEMBRE Nº 1797, CHILCA | C-000007-2012
43709 | AV 9 DE DICIEMBRE Nº 1797, CHILCA | C-000007-2012
43473 | AV CORONEL PARRA Nº 2387, PILCOMAYO | C-000008-2012
.....
Debería ser:

Cita:
codigo | direccion | codigoC
-------------------------------------------------------------------------------------------------------------
44055 | AV 3 DE MAYO S/Nº - Ref: CERCA A 3 ESQUINAS- VILCACOTO | C-000001-2012
44055 | AV 3 DE MAYO S/Nº - Ref: CERCA A 3 ESQUINAS- VILCACOTO | C-000001-2012
44995 | AV 3 DE MAYO S/Nº - Ref: ULTIMO PARADERO DE TRES ESQUINAS | C-000002-2012
43709 | AV 9 DE DICIEMBRE Nº 1797, CHILCA | C-000003-2012
43709 | AV 9 DE DICIEMBRE Nº 1797, CHILCA | C-000003-2012
43709 | AV 9 DE DICIEMBRE Nº 1797, CHILCA | C-000003-2012
43709 | AV 9 DE DICIEMBRE Nº 1797, CHILCA | C-000003-2012
43473 | AV CORONEL PARRA Nº 2387, PILCOMAYO | C-000004-2012
.....
Gracias, por sus aportes.
__________________
un conocimiento compartido es un conocimiento que evoluciona.
  #5 (permalink)  
Antiguo 21/09/2012, 16:50
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Enumerar con cursores

y que que tenga 1,00000 de registros con el codigo que te puse puedes acomodarla a tus necesidades piensale tantito

seria algo asi:

update table
set value=new_value
from
(

select select 'C' + replicate('0',len('000000')-len(rn)) + convert(varchar(20),rn) as columna, campo
from(
select *, row_number() over(partition by campo order by campo) as rn
from tabla
group by campos
) t1

)t2 where table.campo=t2.campo

asi te sirve para 1 millon de registros solo aplica una logica parecida a tus datos
__________________
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/2012, 09:51
 
Fecha de Ingreso: octubre-2003
Ubicación: Perú
Mensajes: 39
Antigüedad: 21 años, 2 meses
Puntos: 0
Respuesta: Enumerar con cursores

Gracias Libras por tu ayuda con una pequeña lógica salio mis dudas.
Cita:
UPDATE t1
SET t1.codigoC = 'C-'+RIGHT('000000'+CAST(t2.rn AS VARCHAR),6)+'-2012'
FROM dbo.tmpCodigoARREGLAR t1
inner join ( select codigoC , ROW_NUMBER() over(order by codigoC) as rn from dbo.tmpCodigoARREGLAR
group by codigoC) as t2
on t1.codigoC= t2.codigoC
Saludos.
__________________
un conocimiento compartido es un conocimiento que evoluciona.

Etiquetas: cursores, enumerar, tabla, campos
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 19:50.