Bases de Datos > SQL Server
actualizar tablas....
(1/1)
AnimaSubtilis:
buenas a todos....
les expongo mi dilema :( ...
en estos momentos me encuentro desarrollando un sp para actualizar dos tablas de las mismas tablas :mellow: ..
el chiste es el siguiente estoy desarrolando un programa para el control de la nomina por periodos de mes....
las tablas son ntem y ntemd
en ntem se guardan los proncipales en donde esta el idtercero... basico.... en fin
en ntemd estan los detalles como son horas extras..prestamos y sus valores respectivos....
la idea es que para que el contador no vuelva a digitar lo mismo cada quincena el programa lea los datos del periodo anterior y los replique en el
nuevo periodo...
ya logre que replicara las cabeceras pero al replicar los detalles se me vuelve loco ...
--- Código: SQL --- DECLARE @cnstrae VARCHAR(17)SELECT top 1 @cnstrae=cnspago FROM nper WHERE cnspago<>'0100000023'ORDER BY 1 DESC ----0100000023 INSERT INTO ntem (idtercero,cnspago,basico,fechadocumento,usuario,//aca inserto las cabeceras y no hay problemaequipoadiciono,total,ingreso,egreso,estado)SELECT idtercero,'0100000023',basico,getdate(),usuario,host_name(),total,0,0,'Activo' FROM ntem AS a WHERE a.cnspago=@cnstraeINSERT INTO ntemd (codconcepto,tipo,valor,idtem) SELECT b.codconcepto,b.tipo,0,c.idtem FROM ntem AS a INNER JOIN ntemd AS b ON a.idtem= b.idtem LEFT JOIN ntem AS c ON a.cnspago <> c.cnspago --and WHERE a.cnspago='0100000022' AND c.cnspago='0100000023'
al ingresar los detalles lo que sucede es que coge todos los detalles del periodo 01000000022 osea si esta asi
--- Código: Text ---Jorge Andres Carlos //masters 1 3 4 //details2 la replica queda asi Jorge Andres Carlos //masters 1 1 1 //details2 2 23 3 3 4 4 4 cuaquier comentario sera bien recibido...
de antemano gracias por su atencion....
AnimaSubtilis:
Buenas por si algo ya pude sacarlo...
me queme la cabeza pensando cosas milagrosas y la solucion era algo sencillo :P ..
eso de ser novato...
asi queda el scrip por si alguna cosa
--- Código: SQL --- DECLARE @cnstrae VARCHAR(17)SELECT top 1 @cnstrae=cnspago FROM nper WHERE cnspago<>'0100000023'ORDER BY 1 DESC ----0100000023 INSERT INTO ntem (idtercero,cnspago,basico,fechadocumento,usuario,//aca inserto las cabeceras y no hay problemaequipoadiciono,total,ingreso,egreso,estado)SELECT idtercero,'0100000023',basico,getdate(),usuario,host_name(),total,0,0,'Activo' FROM ntem AS a WHERE a.cnspago=@cnstraeINSERT INTO ntemd (codconcepto,tipo,valor,idtem) SELECT b.codconcepto,b.tipo,0,c.idtem FROM ntem AS a INNER JOIN ntemd AS b ON a.idtem= b.idtem LEFT JOIN ntem AS c ON a.cnspago <> c.cnspago AND a.idtercero = c.idtercero WHERE a.cnspago='0100000022' AND c.cnspago='0100000023'
era ovio y no se me habia pasado por la cabeza simplemente colocar que fueran iguales los terceros :wub: ...
gracias..........
Navegación
Ir a la versión completa