2017-10-06 1 views
1

Je suis en train de prendre une table qui a une structure similaire à celle-ci:plage de dates Convertir ensemble de lignes

ID  START_DATE END_DATE 
1111 01/01/14 06/01/14 
1111 08/01/14 12/01/14 
1111 01/01/15 03/01/15 
1111 05/01/15 11/01/15 

Et obtenir une structure qui lignes consécutives contiennent les dates entre START_DATE et END_DATE, y compris les dates:

ID  DATE_FIELD 
1111 01/01/14 
1111 02/01/14 
1111 03/01/14 
1111 04/01/14 
1111 05/01/14 
1111 06/01/14 
1111 08/01/14 
1111 09/01/14 
1111 10/01/14 
1111 11/01/14 
1111 12/01/14 
1111 01/01/15 
1111 02/01/15 
1111 03/01/15 
1111 05/01/15 
1111 06/01/15 
1111 07/01/15 
1111 08/01/15 
1111 09/01/15 
1111 10/01/15 
1111 11/01/15 

Répondre

1

Utilisez la fonction generate_series() en jointure latérale, à savoir pour chaque rangée de la table d'origine:

select id, d::date as date_field 
from my_table, 
generate_series(start_date, end_date, interval '1 day') d; 

SqlFiddle