lundi 17 mars 2014

Bilans mensuels (variante)

Revenons sur le contenu de cet article. Pour la réalisation des rapports libreoffice, nous avions travaillé avec une vue qui fournissait le mois de l'opération à partir de la date d'exécution (date_exec). Mais cela n'est pas nécessaire. Nous pouvons par exemple prendre comme source de données la vue basée sur la table opérations et créée par cet instruction:

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

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: