Hola Lista El 18 de abril de 2016, 14:55, Gerardo Herzig<gher...@fmed.uba.ar> escribió:
> Un registro no "conoce" al registro proximo ni al anterior. Gerardo, con Window Functions ( http://www.postgresql.org/docs/9.4/static/tutorial-window.html) si es posible conocer el anterior o el siguiente de un registro... > Basicamente se me ocurren estas maneras: > postgres=# select * from test; > ord | fechainicial | fechafinal > -----+--------------+------------ > 1 | 2015-10-01 | 2015-12-01 > 2 | 2015-08-01 | 2015-10-01 > 3 | 2015-06-01 | 2015-08-01 > 4 | 2015-05-01 | 2015-06-01 > 5 | 2015-04-01 | 2015-05-01 > 6 | 2015-03-01 | 2015-04-01 > 7 | 2015-02-01 | 2015-03-01 > 8 | 2015-01-01 | 2015-01-28 > 9 | 2014-12-01 | 2015-01-01 > 10 | 2014-11-01 | 2014-12-01 > (10 filas) > > postgres=# select *, fechafinal - (select fechainicial from test where ord > = t.ord - 1) from test t; > ord | fechainicial | fechafinal | ?column? > -----+--------------+------------+---------- > 1 | 2015-10-01 | 2015-12-01 | > 2 | 2015-08-01 | 2015-10-01 | 0 > 3 | 2015-06-01 | 2015-08-01 | 0 > 4 | 2015-05-01 | 2015-06-01 | 0 > 5 | 2015-04-01 | 2015-05-01 | 0 > 6 | 2015-03-01 | 2015-04-01 | 0 > 7 | 2015-02-01 | 2015-03-01 | 0 > 8 | 2015-01-01 | 2015-01-28 | -4 > 9 | 2014-12-01 | 2015-01-01 | 0 > 10 | 2014-11-01 | 2014-12-01 | 0 > (10 filas) > > 2) Usando pl/pgsql, abris un cursor y recorres registro por registro, > haciendo un select similar al (subselect) de mas arriba, > > 3) Calculo que con recursive with puede llegarse a algo, pero me estoy > equivocando en algo y no me sale bien. > > HTH > Gerardo > > ----- Mensaje original ----- > > De: "Alberto Cuevas" <betocuevas....@gmail.com> > > Para: "Gerardo Herzig" <gher...@fmed.uba.ar> > > CC: pgsql-es-ayuda@postgresql.org > > Enviados: Lunes, 18 de Abril 2016 15:03:22 > > 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 >) 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 > > > > 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 > > > > > > > > > > > > > > > > > > > > > > - > Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org > ) > Para cambiar tu suscripción: > http://www.postgresql.org/mailpref/pgsql-es-ayuda > -- 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