Está probado y anda: create function fntasas() returns table (tid integer, ttasa decimal(10,8), lx decimal(10,8), dx decimal(10,8)) as $$ declare lx1 decimal(10,8):= 1.0; dx1 decimal(10,8):= 0.0; lr_registro RECORD; begin FOR lr_registro IN select id,tasa from tasas ORDER BY id LOOP tid := lr_registro.id; ttasa := lr_registro.tasa; lx := lx1; dx := ttasa * lx1; return next; lx1:= lx - dx; END LOOP; return; end; $$ LANGUAGE plpgsql;
llamás a la función con select * from fntasas(); El mar., 30 oct. 2018 a las 15:58, Jorge Barzola (<jorgebarz...@gmail.com>) escribió: > Hola estimados: > > Necesito armar el siguiente cuadro: > > id | tasa | lx | dx > ------------------------------------------------------------ > 65 | 0.013670563 | 1.00000000 | 0.01367056 > 66 | 0.015125920 | 0.98632944 | 0.01491914 > 67 | 0.016741070 | 0.97141030 | 0.01626245 > 68 | 0.018533249 | 0.95514785 | 0.01770199 > 69 | 0.020521473 | 0.93744586 | 0.01923777 > 70 | 0.022726715 | 0.91820809 | 0.02086785 > > - Los datos de id y tasa son fijo (estan en una tabla). > - Siempre en la columna lx en el primer registro sera 1.00000000 > - La columna dx se obtiene de tasa * lx > - En la columna lx, apartir del segundo registro el resultado se obtiene > de (lx - dx) de un registro anterior. > > Alguna idea por favor. > > Saludos. > >