Hola lista Algo así seria:
WITH RECURSIVE t(id,tasa,lx,dx) AS ( SELECT a.id,a.tasa,1::numeric as lx,1*a.tasa as dx FROM (values(65,0.013670563 ),(66,0.015125920),(67,0.016741070),(68,0.018533249),(69,0.020521473),(70,0.022726715)) as a(id,tasa) where id=65 UNION ALL SELECT a.id,a.tasa,t.lx-t.dx,a.tasa*(t.lx-t.dx) FROM (values(65,0.013670563 ),(66,0.015125920),(67,0.016741070),(68,0.018533249),(69,0.020521473),(70,0.022726715)) as a(id,tasa) join t on a.id-1=t.id ) SELECT * FROM t order by id asc El mar., 30 de oct. de 2018 a la(s) 13: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. > > -- Cordialmente, Ing. Hellmuth I. Vargas S. Esp. Telemática y Negocios por Internet Oracle Database 10g Administrator Certified Associate EnterpriseDB Certified PostgreSQL 9.3 Associate