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

Columna autonumerica con cursor... Sql 2008

Estas en el tema de Columna autonumerica con cursor... Sql 2008 en el foro de SQL Server en Foros del Web. HOLA BUEN DIA... ESTOY CREANDO UNA COLUMNA CON UN CURSOR UPDATE, LO HAGO CON CURSOR PORQUE ES LO ULTIMO QUE SE ME VIENE A LA ...
  #1 (permalink)  
Antiguo 01/11/2011, 09:55
Avatar de yamiblancoc  
Fecha de Ingreso: agosto-2011
Mensajes: 103
Antigüedad: 12 años, 8 meses
Puntos: 4
Información Columna autonumerica con cursor... Sql 2008

HOLA BUEN DIA... ESTOY CREANDO UNA COLUMNA CON UN CURSOR UPDATE, LO HAGO CON CURSOR PORQUE ES LO ULTIMO QUE SE ME VIENE A LA MENTE YA QUE HE INTENTADO CON BUCLE, CON IDENTITY Y YA NO SE COMO HACER...

ESTE ES MI CODIGO
AQUI CREO MI TABLA TEMPORAL DE AQUI PASA A LA TABLA FIJA, LA CREE PARA VER TODOS LOS REGISTROS Y LUEGO ACTUALIZAR LA COLUMNA comp_registro
Código:
create table #temp 
(comp_cod varchar (20), 
pres_ano int, 
comp_registro int, 
id_item varchar (200), 
ac_proy_cod varchar (50), 
ac_proy_tipo int, 
acesp_cod int, 
monto int, 
detalle varchar (50))
Aqui hago mi consulta y me traigo la informacion de mi BD's a mi #tabla
Código:
declare
@comp_cod varchar (20), 
@pres_ano int, 
@comp_registro int, 
@id_item varchar (200), 
@ac_proy_cod varchar (50), 
@ac_proy_tipo int, 
@acesp_cod int, 
@monto int, 
@detalle varchar (50),
@fin1 int


insert into #temp select 
comp_cod= 'nom'+ replicate(0,5-len(a.codnom))+convert (varchar,a.codnom),
pres_ano= a.anioa ,
comp_registro='',
from SWNOMMSSQL000002.dbo.swnompta a left OUTER JOIN dbo.swnomhmv b on a.codnom= b.codnom
where  mesa = 6
and dia between  1 and 15
and tipcon = 'A'
and anioa =2011
and frecuencia  in (2,3,7,12,16,18)
group by a.codnom, a.codcon, a.anioa
order by a.codnom, a.codcon
  
select * from  #temp
me muestra
comp_cod.................... pres_ano...........................comp_registro.. ...... mas columnas
nom00739.....................2011 ........................................ 0
nom00744.....................2011 ........................................ 0
nom00744.....................2011................. ........................ 0
nom00744.....................2011 .........................................0

aqui hago mi cursor
Código:
  
DECLARE nom_cursor cursor for
			select * from #temp
		 for update of comp_registro
		
OPEN nom_cursor
fetch next from nom_cursor into @comp_cod, @pres_ano, @comp_registro, @id_item, @ac_proy_cod, @ac_proy_tipo, @acesp_cod, @monto, @detalle

	while @@FETCH_STATUS=0 and @comp_registro = 0
            update SWNOMMSSQL000002..#temp
                  set comp_registro = @comp_registro
             where current of nom_cursor
      end
      
      FETCH next from nom_cursor into @comp_cod, @pres_ano, @comp_registro, @id_item, @ac_proy_cod, @ac_proy_tipo, @acesp_cod, @monto, @detalle
 		end
	
close nom_cursor
deallocate nom_cursor
y me quede aqui..... El hecho es que cree el cursor para que me muestre
la tabla asi
comp_cod................... pres_ano..................... comp_registro........ mas columnas
nom00739......................2011 .................................... 1
nom00744.....................2011................. .......................1ES 1 OTRA ES PORQUE ES OTRO COMP_COD
nom00744 .....................2011......................... ............. 2
nom00744...................... 2011 ..................................... 3

Cada vez que el comp_cod se diferente al que esta agregando, se inicializa el contador... no se si me explico
  #2 (permalink)  
Antiguo 01/11/2011, 10:00
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: Columna autonumerica con cursor... Sql 2008

Amiga porque no usas la funcion row_number() over(partition by) esta funcion hace lo que tu tienes sin necesidad de cursores.

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 01/11/2011, 10:13
Avatar de yamiblancoc  
Fecha de Ingreso: agosto-2011
Mensajes: 103
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: Columna autonumerica con cursor... Sql 2008

Si eso funciona pero me trae los valores de la siguiente manera

comp_cod................... pres_ano... . comp_registro.............. monto
nom00744 .................. 2011 ............ 1 ....................... 2345
nom00744................... 2011 .......... 2 ....................... 4567
nom00744 .................. 2011 ............ 3 ....................... 235
nom00744................... 2011 .......... 4 ....................... 47
nom00744 .................. 2011 ............ 5 ....................... 235
nom00744................... 2011 .......... 6 ....................... 989
nom00739 .................. 2011 ............ 7 ....................... 2345
nom00739................... 2011 .......... 8 ....................... 989
nom00739................... 2011 .......... 9 ....................... 99
<- NO DEBE SER ASI

comp_cod................... pres_ano... . comp_registro.............. monto
nom00744 .................. 2011 ............ 1 ....................... 2345
nom00744................... 2011 .......... 2 ....................... 4567
nom00744 .................. 2011 ............ 3 ....................... 235
nom00744................... 2011 .......... 4 ....................... 47
nom00744 .................. 2011 ............ 5 ....................... 235
nom00744................... 2011 .......... 6 ....................... 989
nom00739 .................. 2011 ............ 1 ....................... 2345
nom00739................... 2011 .......... 2 ....................... 989
nom00739................... 2011 .......... 3 ....................... 9<--- DEBE SER ASI


FIJATE EN QUE EL COMP_COD ES DISTINTO POR TANTO VUELVE A 1
  #4 (permalink)  
Antiguo 01/11/2011, 10:16
Avatar de yamiblancoc  
Fecha de Ingreso: agosto-2011
Mensajes: 103
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: Columna autonumerica con cursor... Sql 2008

La verdad es que trato de hacer de todo para evitar el cursor ya que no me gusta pero no veo otra solucion o no se si es que me cerre y no veo mas resultados
  #5 (permalink)  
Antiguo 01/11/2011, 11:11
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: Columna autonumerica con cursor... Sql 2008

Pues el row_number funciona como quieres mira:


Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. comp_cod VARCHAR(20),
  4. pres_ano INT,
  5. monto INT
  6. )
  7.  
  8. INSERT INTO #temp VALUES('nom00744',2011,2345)
  9. INSERT INTO #temp VALUES('nom00744',2011,4567)
  10. INSERT INTO #temp VALUES('nom00744',2011,235)
  11. INSERT INTO #temp VALUES('nom00744',2011,47)
  12. INSERT INTO #temp VALUES('nom00744',2011,235)
  13. INSERT INTO #temp VALUES('nom00744',2011,989)
  14. INSERT INTO #temp VALUES('nom00739',2011,2345)
  15. INSERT INTO #temp VALUES('nom00739',2011,989)
  16. INSERT INTO #temp VALUES('nom00739',2011,99)
  17.  
  18.  
  19. SELECT comp_cod,pres_ano, ROW_NUMBER() OVER(partition BY comp_cod ORDER BY pres_ano) AS rn, monto FROM #temp
  20.  
  21. comp_cod    pres_ano    rn  monto
  22. nom00739    2011    1   2345
  23. nom00739    2011    2   989
  24. nom00739    2011    3   99
  25. nom00744    2011    1   2345
  26. nom00744    2011    2   4567
  27. nom00744    2011    3   235
  28. nom00744    2011    4   47
  29. nom00744    2011    5   235
  30. nom00744    2011    6   989

Saludos!!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 01/11/2011, 11:49
Avatar de yamiblancoc  
Fecha de Ingreso: agosto-2011
Mensajes: 103
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: Columna autonumerica con cursor... Sql 2008

Lo haces tan facil!!!!!................. como te envidio (DE UNA BONITA FORMA).... de verdad que muchisimas gracias!! kiss!!
  #7 (permalink)  
Antiguo 01/11/2011, 12:28
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: Columna autonumerica con cursor... Sql 2008

Cita:
Iniciado por yamiblancoc Ver Mensaje
Lo haces tan facil!!!!!................. como te envidio (DE UNA BONITA FORMA).... de verdad que muchisimas gracias!! kiss!!
No es que lo haga facil, sino que ha sido puro prueba y error y aprender poco a poco...... gracias por el cumplido
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 01/11/2011, 14:21
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: Columna autonumerica con cursor... Sql 2008

Soy tu fan.......
__________________
MCTS Isaias Islas

Etiquetas: columna, cursor, registros, select, 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




La zona horaria es GMT -6. Ahora son las 16:01.