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;
- Solde ligne par ligne
- Partager photos en ligne - Guide
- Formulaire en ligne de meta - Guide
- Apparaitre hors ligne instagram - Guide
- Mètre en ligne - Guide
- Office en ligne - Guide
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.
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
detla 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?
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?
est ce que la requête tient compte d'une période donnée c'est à dire entre deux dates ( datedebut) et (datefin ) , aussi d1 et d2 utilisés dans la requête det représente quoi ?