PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Répartition des dates en fonction de l'année fiscale

En fait, je privilégie la solution d'Andomar (avec l'ajout d'un processus qui remplit automatiquement la table Périodes), mais pour le plaisir, voici une solution qui ne l'exige pas.

CREATE TABLE your_table (start_date date, end_date date);
INSERT INTO your_table VALUES ('Jan-17-2008', 'May-20-2009');

SELECT
    GREATEST(start_date, ('04-01-'||series.year)::date) AS year_start,
    LEAST(end_date, ('03-31-'||series.year + 1)::date) AS year_end
FROM
    (SELECT
        start_date,
        end_date,
        generate_series(
            date_part('year', your_table.start_date - INTERVAL '3 months')::int,
            date_part('year', your_table.end_date - INTERVAL '3 months')::int)
    FROM your_table) AS series(start_date, end_date, year)
ORDER BY
    start_date;