Solde ligne par ligne

Résolu
Oholabi12345 Messages postés 511 Statut Membre -  
 oholabi -
Bonjour, j'ai cette requête et je souhaiterais avoir le solde ligne par ligne c'est à dire Montantdebit- montantcredit sur chaque ligne en tenant compte du solde précédent, voici la requête :
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;
A voir également:

2 réponses

Résumé de la discussion

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.

Généré automatiquement par IA
sur la base des meilleures réponses
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
0
Oholabi12345 Messages postés 511 Statut Membre 1
 
Bonsoir , je reçois le message suivant: Reference circulaire causé par << det>>
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 ?
0
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?
0
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
 
si tu travailles avec une période, veux-tu que le solde soit mis à zéro au début de la période?
0
Oholabi12345 Messages postés 511 Statut Membre 1 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
 
Bjr, je ne vois pas l'importance de mettre le stock à zéro ou pas au début de la période
Pouvez vous m'expliquer la portée
0
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Oholabi12345 Messages postés 511 Statut Membre
 
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?
0
Oholabi12345 Messages postés 511 Statut Membre 1 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
 
Oui il faut tenir compte du solde antérieur sauf si il est à zéro
Merci encore
0
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Oholabi12345 Messages postés 511 Statut Membre
 
alors il ne fait pas appliquer la période dans les trois requêtes de base pour calculer les soldes, il fait l'appliquer après.
0