No tengo Postgresql a la mano. No obstante la idea podría ser la misma…
CREATE CURSOR l( ORD N(2), FI DATE, FF DATE ) INSERT INTO l values( 1, DATE(2015,10,01) , DATE(2015,12,01) ) INSERT INTO l values( 2, DATE(2015,08,01) , DATE(2015,10,01) ) INSERT INTO l values( 3, DATE(2015,06,01) , DATE(2015,08,01) ) INSERT INTO l values( 4, DATE(2015,05,01) , DATE(2015,06,01) ) INSERT INTO l values( 5, DATE(2015,04,01) , DATE(2015,05,01) ) INSERT INTO l values( 6, DATE(2015,03,01) , DATE(2015,04,01) ) INSERT INTO l values( 7, DATE(2015,02,01) , DATE(2015,03,01) ) INSERT INTO l values( 8, DATE(2015,01,01) , DATE(2015,01,28) ) INSERT INTO l values( 9, DATE(2014,12,01) , DATE(2015,01,01) ) INSERT INTO l values(10, DATE(2014,11,01) , DATE(2014,12,01) ) SELECT ff, ( select FI FROM l WHERE ord = 1), FF - ( select FI FROM l WHERE ord = 1) FROM l WHERE ord = 2 ; union all ; SELECT ff, ( select FI FROM l WHERE ord = 2), FF - ( select FI FROM l WHERE ord = 2) FROM l WHERE ord = 3; union all ; SELECT ff, ( select FI FROM l WHERE ord = 3), FF - ( select FI FROM l WHERE ord = 3) FROM l WHERE ord = 4; union all ; SELECT ff, ( select FI FROM l WHERE ord = 4), FF - ( select FI FROM l WHERE ord = 4) FROM l WHERE ord = 5; union all ; SELECT ff, ( select FI FROM l WHERE ord = 5), FF - ( select FI FROM l WHERE ord = 5) FROM l WHERE ord = 6; union all ; SELECT ff, ( select FI FROM l WHERE ord = 6), FF - ( select FI FROM l WHERE ord = 6) FROM l WHERE ord = 7; union all ; SELECT ff, ( select FI FROM l WHERE ord = 7), FF - ( select FI FROM l WHERE ord = 7) FROM l WHERE ord = 8; union all ; SELECT ff, ( select FI FROM l WHERE ord = 8), FF - ( select FI FROM l WHERE ord = 8) FROM l WHERE ord = 9; union all ; SELECT ff, ( select FI FROM l WHERE ord = 9), FF - ( select FI FROM l WHERE ord = 9) FROM l WHERE ord = 10; De: pgsql-es-ayuda-ow...@postgresql.org [mailto:pgsql-es-ayuda-ow...@postgresql.org] En nombre de Alberto Cuevas Enviado el: lunes, 18 de abril de 2016 01:03 p.m. Para: Gerardo Herzig <gher...@fmed.uba.ar> CC: pgsql-es-ayuda@postgresql.org Asunto: Re: [pgsql-es-ayuda] Restar dos campos de tipo fecha de distintos registros Muchas gracias por responder, disculpen por no dar un ejemplo mas claro, mi tabla tiene los registros similar a esto: |Ord. | FechaInicial | FechaFinal | |1 | 01/10/2015 | 01/12/2015 | |2 | 01/08/2015 | 01/10/2015 | |3 | 01/06/2015 | 01/08/2015 | |4 | 01/05/2015 | 01/06/2015 | |5 | 01/04/2015 | 01/05/2015 | |6 | 01/03/2015 | 01/04/2015 | |7 | 01/02/2015 | 01/03/2015 | |8 | 01/01/2015 | 28/01/2015 | |9 | 01/12/2014 | 01/01/2015 | |10 | 01/11/2014 | 01/12/2014 | Debo restar FechaFinal - FechaInicial es decir: FechaFinal de Ord. 2 - FechaInicial de Ord.1 = 0 dias FechaFinal de Ord. 3 - FechaInicial de Ord.2 = 0 dias ...... Y asi sucesivamente.. Espero me puedan entender. Saludos. El lun., 18 abr. 2016 a las 12:20, Gerardo Herzig (<gher...@fmed.uba.ar <mailto:gher...@fmed.uba.ar> >) escribió: Vas a tener que orquestar 2 selects distintos para sacar tu "fecha inicial" y tu "fecha final". Supongo que tu tabla de ejemplo es esquematica, pero mas alla de la posible complejidad del select, el tipo date soporta el operador de resta "habitual": (select fechafinal from TABLA where ord = 1) - (select fechainicial from TABLA where ord=2) En tu ejemplo, el resultado seria negativo, por cierto, pero calculo que eso lo podras contemplar. HTH Gerardo ----- Mensaje original ----- > De: "Alberto Cuevas" <betocuevas....@gmail.com > <mailto:betocuevas....@gmail.com> > > Para: pgsql-es-ayuda@postgresql.org > Enviados: Lunes, 18 de Abril 2016 13:36:18 > Asunto: [pgsql-es-ayuda] Restar dos campos de tipo fecha de distintos > registros > > > > > > > Hola a todos necesito restar dos campos de tipo fecha de distintos > registros. > > FechaFinal - FechaInicial > > | Ord. | FechaInicial | FechaFinal | > | 2 | 26/02/2016 | 02/03/2016 | > | 1 | 18/02/2016 | 24/02/2016 | > > 24/02/2016 - 26/02/2016 = 2 dias > > Por favor si me pueden ayudar . > > Saludos > > > > > >