From: | Hellmuth Vargas <hivs77(at)gmail(dot)com> |
---|---|
To: | Alvaro Herrera <alvherre(at)2ndquadrant(dot)com> |
Cc: | Alberto Cuevas <betocuevas(dot)net(at)gmail(dot)com>, Gerardo Herzig <gherzig(at)fmed(dot)uba(dot)ar>, Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Restar dos campos de tipo fecha de distintos registros |
Date: | 2016-04-18 21:03:11 |
Message-ID: | CAN3Qy4pKN3TE_ebtnmi2vrJwHLG5tW2HKkv78HRtk37wsWw7kg@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
---------- Mensaje enviado ----------
De: Hellmuth Vargas <hivs77(at)gmail(dot)com>
Fecha: 18 de abril de 2016, 13:18
Asunto: Re: [pgsql-es-ayuda] Restar dos campos de tipo fecha de distintos
registros
Para: Alberto Cuevas <betocuevas(dot)net(at)gmail(dot)com>
CC: Gerardo Herzig <gherzig(at)fmed(dot)uba(dot)ar>, Lista Postgres ES <
pgsql-es-ayuda(at)postgresql(dot)org>
Hola lista
Con Window Functions (
http://www.postgresql.org/docs/9.4/static/tutorial-window.html) puede
realizar eso...para el problema especifico seria asi:
SELECT *,
LAG(FechaInicial) over(order by Ord),FechaFinal-LAG(FechaInicial)
over(order by Ord) as diferencia
from (values (1,cast('01/10/2015' as date),cast('01/12/2015' as date)),
(2,cast('01/08/2015' as date),cast('01/10/2015' as date)),
(3,cast('01/06/2015' as date),cast('01/08/2015' as date)),
(4,cast('01/05/2015' as date),cast('01/06/2015' as date)),
(5,cast('01/04/2015' as date),cast('01/05/2015' as date)),
(6,cast('01/03/2015' as date),cast('01/04/2015' as date)),
(7,cast('01/02/2015' as date),cast('01/03/2015' as date)),
(8,cast('01/01/2015' as date),cast('28/01/2015' as date)),
(9,cast('01/12/2014' as date),cast('01/01/2015' as date)),
(10,cast('01/11/2014' as date),cast('01/12/2014' as date))) as
a(Ord,FechaInicial,FechaFinal)
con resultado
Ord FechaInicial FechaFinal fechaInicialFilaAnterior Diferencia
1 2015-10-01 2015-12-01
2 2015-08-01 2015-10-01 2015-10-01 0
3 2015-06-01 2015-08-01 2015-08-01 0
4 2015-05-01 2015-06-01 2015-06-01 0
5 2015-04-01 2015-05-01 2015-05-01 0
6 2015-03-01 2015-04-01 2015-04-01 0
7 2015-02-01 2015-03-01 2015-03-01 0
8 2015-01-01 2015-01-28 2015-02-01 -4
9 2014-12-01 2015-01-01 2015-01-01 0
10 2014-11-01 2014-12-01 2014-12-01 0
El 18 de abril de 2016, 15:50, Alvaro Herrera<alvherre(at)2ndquadrant(dot)com>
escribió:
> Alberto Cuevas escribió:
> > 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..
>
> La función ventana LAG() puede retornar el valor en el registro
> anterior; o si declaras ventanas de tamaño uno, la función first_value()
> debería servir también. Ver
> http://www.postgresql.org/docs/current/static/functions-window.html
>
> --
> Álvaro Herrera http://www.2ndQuadrant.com/
> PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
>
> -
> Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)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
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2016-04-18 21:07:37 | Re: Restar dos campos de tipo fecha de distintos registros |
Previous Message | Alvaro Herrera | 2016-04-18 20:50:29 | Re: Restar dos campos de tipo fecha de distintos registros |