hola, espero me puedan ayudar. tengo una tabla en donde una de las columnas la tengo como un texto en la cual guardo una formula a ejecutar en otras variables. Es decir algo como esto id_movcargo subtotaltotalformula 1capital NULL50000NULL 1interes NULL30000NULL 1comision NULL30000capital*.002 2capital NULL30000NULL 2interes NULL30000NULL 2comision NULL30000NULL 3interes 212000capital*interes*plazo 3cuota 2030000NULL 3administracion 230000NULL La columna de formula la quiero pasar a otra tabla en donde voy a insertar los valores de subtotal y calcular los totales, mediante dicha formula, es decir quiero asignar el valor a una variable algo asi como @interes=formula, pero no encuentra la forma, la finalidad es que las formulas cambian continuamente y por eso mismo quiero dejar un procedimiento o un trigger que me permita hacer los calculos sin mover nada al codigo y si cambia la formula solo actualizarla en esta tabla y que los cambios se vean reflejados en los calculos. Espero me puedan ayuda y gracias
Hola, dame un poco de tiempo para pensarlo. Saludos, Luis Martin Moderator SQL-Server-Performance.com One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important Bertrand Russell Nunca esperes el reconocimiento de tus hijos, eso ocurrirá luego de tu muerte All postings are provided “AS IS†with no warranties for accuracy.
A mi criterio deberÃas hace un trigger for update y uno for insert. De esta forma podrÃas actualizar la otra tabla cuando se ingrese un nuevo registro o cuando se modifique. De todas formas, espera por otras opiniones. Luis Martin Moderator SQL-Server-Performance.com One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important Bertrand Russell Nunca esperes el reconocimiento de tus hijos, eso ocurrirá luego de tu muerte All postings are provided “AS IS†with no warranties for accuracy.
No se si entiendo bien la cuestión, pero te hce un ejemplo de susttucion para ver si resulta como base. Pegalo en el query analyzer y dame tus opiniones. Gracias y Felices Fiestas para todos ///////////////////////////// create table #formula (Campo varchar(20), valor numeric(18,2),formula varchar(100)) insert #formula (campo,valor,formula) values ('capital',10000,NULL) insert #formula (campo,valor,formula) values ('interes',Null,'capital * %interes * tiempo') insert #formula (campo,valor,formula) values ('%interes',.02,NULL) insert #formula (campo,valor,formula) values ('tiempo',30,NULL) print 'Antes de calcular' select * from #formula Declare @formula varchar(100) Declare @nValor numeric(18,2) Select @formula = formula from #formula where campo ='interes' select@formula = replace(@formula,f2.campo,str(f2.valor,10,2)) from #formula f1, #formula f2 wheref2.valor is not null exec ('Update#formula Setvalor = '+@formula +' from #formula where campo =''interes''') print 'despues de calcular' select * from #formula
PARA C MALDON GRACIAS MALDON, EFECTIVAMENTE ES LO QUE BUSCO REALIZAR. SOLO QUE TENGO UNA DUDA MAS PARA PODER APLICARLO EN MI TRIGGER, ME PODRIA DETALLAR CON TUS PROPIAS PALABRAS QUE ES LO QUE HACES EN ESTA PARTE: select @formula = replace(@formula,f2.campo,str(f2.valor,10,2)) from #formula f1, #formula f2 where f2.valor is not null exec ('Update #formula Set valor = '+@formula +' from #formula where campo =''interes''') GRACIAS POR TU AYUDA. FELICES FIESTAS!!!!
Ok, El query: recorda que la formula es:'capital * %interes * tiempo' por lo tanto se necesita reemplazar cada una de las palabras por el valor respectivo el siguiente query prepara en la varriable @formula la ecuacion reemplazada. select @formula = replace(@formula,f2.campo,str(f2.valor,10,2)) from #formula f1, #formula f2 where f2.valor is not null luego hay que hacer que se ejecute la ecuacion, y como ella esta en una variable se arma un string que reemplazara el valor en la tabla definitiva. exec ('Update #formula Set valor = '+@formula +' from #formula where campo =''interes''') Saludos
HOLA CMALDON: GRACIAS POR TU VALIOSA AYUDA, ME AYUDO BASTANTE Y YA LA ENTENDI POR COMPLETO DISCULPA NUEVAMENTE PERO TENGO OTRO PEQUEÑO PROBLEMA QUE NO PUEDO RESOLVER AHORA TENGO ESTA SITUACION: TENGO ESTA TABLA create table movimientos (id_mov int identity (1,1), importe float, plazo int, interes float, Procesos char(50) ) insert into movimientos (importe, plazo, interes, procesos) values (15000, 20, .02, 123456) insert into movimientos (importe, plazo, interes, procesos) values (30000, 15, .015, 145) select * from movimientos LA COLUMNA DE PROCESOS ES UN CARACTER QUE QUIERO DESCOMPONER EN NUMEROS INDIVIDUALES ES DECIR EN LUGAR DE QUE SEA TODO EL VALOR: "123456" O "145" ME LO LEA COMO UN CAMPO 1 2 3 4 5 6 Y LOS PUEDA INSERTAR EN UNA NUEVA TABLA CON EL NUMERO DE ID_REGISTRO CORRESPONDIENTE, ESTO LO QUIERO HACER COMO UNA ESPECIE DE FACTURAS PORQUE EL ID_REGISTRO LO INSERTARIA EN UNA NUEVA TABLA CON CADA UNO DE LOS NUMERO (1 2 3 4 5 6 ) ASIGNARLE UN VALOR. ES DECIR ALGO COMO ESTO create table calculamovimientos (id_mov int, id_tipooperacion int, descripcionoperacion nchar(100), resultado float ) insert into calculamovimientos (id_mov, id_tipooperacion) values (1, 1) insert into calculamovimientos (id_mov, id_tipooperacion) values (1, 2) insert into calculamovimientos (id_mov, id_tipooperacion) values (1, 3) insert into calculamovimientos (id_mov, id_tipooperacion) values (1, 4) insert into calculamovimientos (id_mov, id_tipooperacion) values (1, 5) insert into calculamovimientos (id_mov, id_tipooperacion) values (1, 6) insert into calculamovimientos (id_mov, id_tipooperacion) values (2, 1) insert into calculamovimientos (id_mov, id_tipooperacion) values (2, 4) insert into calculamovimientos (id_mov, id_tipooperacion) values (2, 5) Y LOS VALORES DE DESCRIPCION LOS LLENARE POSTERIORMENTE CON LA DESCRIPCION QUE CORRESPONDE POR EL NUMERO DE id_tipooperacion Y EL RESULTADO SERA ACTUALIZADO POR LA FORMULA QUE ARRASTRO Y QUE ME AYUDASTE A REALIZAR. EN RESUMEN ¿COMO PUEDO INSERTAR ESOS ID_REGISTRO Y LOS id_tipoOPERACION EN ESTA TABLA DE CALCULAMOVIMIENTOS A PARTIR DE LA DE MOVIMIENTOS? SEPARAR EL (123456) A REGISTROS 1 CON ID 1 , REGISTRO 2 CON ID 1, ETC. ESPERO ME PUEDAS AYUDAR GRACIAS.
Espero que te sea util. FELIZ AÑO para todos -------------------------------------- Declare@nCaracter int Declare@cCaracter char(1) Declare@nId_movint Declare@nId_movMaxint Declare@procesosvarchar(50) Select@nId_mov= min(Id_mov), @nId_movMax= max(Id_mov) From movimientos while@nId_mov <= @nId_movMax Begin Select@procesos= procesos From movimientos WhereId_mov = @nId_mov Set@nCaracter = 1 While@nCaracter <= len(@procesos) Begin Set@cCaracter = substring(@procesos,@nCaracter,1) If not exists ( Select * From calculamovimientos WhereId_mov = @nId_mov Andid_tipooperacion= @cCaracter ) Insertcalculamovimientos (id_mov, id_tipooperacion) values (@nId_mov , @cCaracter) Set@nCaracter = @nCaracter + 1 End Set@nId_mov = @nId_mov + 1 End
Muchas Felicidades. Luis Martin Moderator SQL-Server-Performance.com Although nature commences with reason and ends in experience it is necessary for us to do the opposite, that is to commence with experience and from this to proceed to investigate the reason. Leonardo Da Vinci Nunca esperes el reconocimiento de tus hijos, eso ocurrirá luego de tu muerte All postings are provided “AS IS†with no warranties for accuracy.