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;

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
  1. 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
    1. 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
  2. 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
    1. 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
    2. 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
    3. 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
    4. 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
    5. 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