CREATE VIEW opérationsvs AS
SELECT substr(a.reference::text, 1, 4) AS an,
a.reference,
a.date_exec,
CASE
WHEN a.montant > 0::numeric THEN a.montant
ELSE 0::numeric
END AS crédit,
CASE
WHEN a.montant < 0::numeric THEN - a.montant
ELSE 0::numeric
END AS débit,
a.montant AS solde,
a.contrepartie,
( SELECT SUM( montant )
FROM opérations b
WHERE b.reference <= a.reference
AND extract(year FROM b.date_exec) = extract(year FROM a.date_exec)
AND extract(month FROM b.date_exec) = extract(month FROM a.date_exec)
) AS solde_c
FROM opérations a
SELECT substr(a.reference::text, 1, 4) AS an,
a.reference,
a.date_exec,
CASE
WHEN a.montant > 0::numeric THEN a.montant
ELSE 0::numeric
END AS crédit,
CASE
WHEN a.montant < 0::numeric THEN - a.montant
ELSE 0::numeric
END AS débit,
a.montant AS solde,
a.contrepartie,
( SELECT SUM( montant )
FROM opérations b
WHERE b.reference <= a.reference
AND extract(year FROM b.date_exec) = extract(year FROM a.date_exec)
AND extract(month FROM b.date_exec) = extract(month FROM a.date_exec)
) AS solde_c
FROM opérations a
Là où on affichait le mois (comme en-tête de groupe, au dessus du trait rouge), on mettra maintenant la date
mais évidemment avec un format approprié:
Reste à s'occuper du groupement:
Et voilà!
Ci-dessous par exemple, les opérations de février (page 3 du rapport) avec le solde relatif aux opérations de février seulement: