Solde ligne par ligne
Résoluoholabi -
SELECT Commandes.idClient, client.nomcomplet, client.adresse, client.tel, client.ville,
Commandes.DateCommande , Commandes.CodeFacture, "Commande"as operation,
Commandes.MontantTTC AS MONTANTDEBIT, Commandes.MontantRegle AS MONTANTCREDIT
FROM client RIGHT JOIN Commandes ON client.idclient = Commandes.idClient
UNION ALL
SELECT Avance.Idlient, client.nomcomplet, client.adresse, client.tel, client.ville,
Avance.DateAvance, "", "Avance",
0, Avance.MontantAvance
FROM client INNER JOIN Avance ON client.idclient = Avance.Idlient
order by DateCommande;
2 réponses
La demande porte sur l'obtention d'un solde ligne par ligne, soit Montantdebit moins Montantcredit, en tenant compte du solde précédent, intégrant les opérations Commandes, Avance et Reglements.
Plusieurs versions ont tenté d'intégrer les soldes dans les trois requêtes (Commande, Avance, Reglement) avec UNION ALL ou dans une requête unique nommée det; les soldes n'étaient pas correctement calculés pour une période.
D'autres approches proposent de calculer le solde ligne par ligne en utilisant une auto-jointure ou une agrégation sur les dates afin d'obtenir le solde cumulé par client et date.
Pour éviter les incohérences, une précision utile est que la période doit être appliquée dès l'étape initiale afin d'assurer un solde cohérent sur l'ensemble des opérations.
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
donnons un nom à cette requête, appelons-là det.
essayons ceci:select d1.idClient, d1.DateCommande, d1.nomcomplet, d1.adresse, d1.tel, d1.ville, d1.CodeFacture, d1.operation, d1.MONTANTDEBIT, d1.MONTANTCREDIT, sum(d2.MONTANTDEBIT - d2.MONTANTCREDIT) as solde from det as d1, det as d2 where d1.idClient = d2.idClient and d1.DateCommande >= d2.DateCommande group by d1.idClient, d1.DateCommande, d1.nomcomplet, d1.adresse, d1.tel, d1.ville, d1.CodeFacture, d1.operation, d1.MONTANTDEBIT, d1.MONTANTCREDIT order by d1.idClient, d1.DateCommande
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
tu as bien nommédet
la requête que tu as partagée au début de la discussion?
penses-tu que la requête tient compte d'une période donnée?-
-
-
reprenons ton tableau.
si la période commence au 8/1, quel solde veux-tu avoir en première ligne pour le 8/1: 60000 ou 210000?
faut-il tenir compte du solde des opérations avant la période? -
-
-