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................. .......................1
ES 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