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
>
>
>
>
>
>

Responder a