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

Responder a