IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Calcul soldes comptes


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2011
    Messages : 40
    Par défaut Calcul soldes comptes
    Bonjour,


    J'ai essayé de regarder les sujets précédents qui traite du même sujet, mais je n'ai pas trouvé d'aide comme il me le faut. Donc comme le titre l'indique, j'aimerai faire une requête pour calculer le solde des comptes. Voici la table :

    Compte :
    noCOMP
    typeCOMP
    deviseCOMP
    dateFermetureCOMP
    dateOuvertureCOMP
    Opration :
    noOPER
    montantOPER
    depenseOPER => bit = 1 pour une dépense, 0 pour une rentrée d'argent
    dateOPER
    noCOMP

    Mon début de requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT comp.noCOMP, comp.typeCOMP, SUM(oper.montantOPER) AS soldeCOMP, comp.deviseCOMP
    FROM Compte comp
    JOIN Operation oper ON
        oper.noCOMP = comp.noCOMP
    WHERE oper.depenseOPER = 1
    AND comp.dateFermetureCOMP IS NULL
    GROUP BY comp.noCOMP, comp.typeCOMP, comp.deviseCOMP
    Mon problème ici, c'est que ça va me calculer la somme des dépenses, mais je ne sais pas trop comment y soustraire à la somme des rentrées... J'arrive vraiment pas à voir comment faire.

    Quelqu'un aurait une idée svp ?


    Merci bien.
    Mini_Croco

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT comp.noCOMP, comp.typeCOMP, 
           SUM(CASE oper.depenseOPER
                  WHEN 1 THEN oper.montantOPER
                  ELSE 0
           END -
           SUM(CASE oper.depenseOPER
                  WHEN ??? THEN oper.montantOPER
                  ELSE 0
           END AS soldeCOMP, comp.deviseCOMP
    FROM Compte comp
    JOIN Operation oper ON
        oper.noCOMP = comp.noCOMP
    WHERE comp.dateFermetureCOMP IS NULL
    GROUP BY comp.noCOMP, comp.typeCOMP, comp.deviseCOMP
    Remplacez ??? par le code adéquat.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2011
    Messages : 40
    Par défaut
    Peux-tu juste m'expliquer comment fonctionne le case dans le SUM comme ça stp, car je ne connaissais pas du tout. Et du coup, je ne sais pas par quoi remplacer les ???.

    J'ai regardé sur Internet, mais je n'ai pas trouvé d'explications très clair. Ils balancent juste la requête mais expliquent pas vraiment.



    PS : C'est bon j'ai compris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT comp.noCOMP, comp.typeCOMP, 
           SUM(CASE oper.depenseOPER
                  WHEN 1 THEN oper.montantOPER
                  ELSE 0
           END) AS depenses,
           SUM(CASE oper.depenseOPER
                  WHEN 0 THEN oper.montantOPER
                  ELSE 0
           END) AS recettes, comp.deviseCOMP
    FROM Compte comp
    JOIN Operation oper ON
        oper.noCOMP = comp.noCOMP
    WHERE comp.dateFermetureCOMP IS NULL
    GROUP BY comp.noCOMP, comp.typeCOMP, comp.deviseCOMP

    Comment je peux faire pour avoir un solde ? Car si je rajoute (recettes - depenses) AS soldeCOMP, ça ce marche pas, il ne veut pas recettes et depenses

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    Il faut soit reprendre les définition complètes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    SELECT comp.noCOMP, comp.typeCOMP, 
           SUM(CASE oper.depenseOPER
                  WHEN 1 THEN oper.montantOPER
                  ELSE 0
           END) AS depenses,
           SUM(CASE oper.depenseOPER
                  WHEN 0 THEN oper.montantOPER
                  ELSE 0
           END) AS recettes, 
     
            SUM(CASE oper.depenseOPER
                  WHEN 0 THEN oper.montantOPER
                  ELSE 0
           END)
       -
           SUM(CASE oper.depenseOPER
                  WHEN 1 THEN oper.montantOPER
                  ELSE 0
           END) 
              AS Solde,
          comp.deviseCOMP
    FROM Compte comp
    JOIN Operation oper ON
        oper.noCOMP = comp.noCOMP
    WHERE comp.dateFermetureCOMP IS NULL
    GROUP BY comp.noCOMP, comp.typeCOMP, comp.deviseCOMP
    Soit passer par une CTE ou une sous requete en pseudo-table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    WITH CTE AS (
    SELECT comp.noCOMP, comp.typeCOMP, 
           SUM(CASE oper.depenseOPER
                  WHEN 1 THEN oper.montantOPER
                  ELSE 0
           END) AS depenses,
           SUM(CASE oper.depenseOPER
                  WHEN 0 THEN oper.montantOPER
                  ELSE 0
           END) AS recettes, 
     
          comp.deviseCOMP
    FROM Compte comp
    JOIN Operation oper ON
        oper.noCOMP = comp.noCOMP
    WHERE comp.dateFermetureCOMP IS NULL
    GROUP BY comp.noCOMP, comp.typeCOMP, comp.deviseCOMP
    )
    SELECT 
        noCOMP, 
        typeCOMP, 
        depenses,
        recettes,
        recettes - depenses AS Solde,
        deviseCOMP
    FROM CTE

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2011
    Messages : 40
    Par défaut
    Aaah super !! Merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Calcul solde de tout compte
    Par Rocs75 dans le forum Droit du travail
    Réponses: 2
    Dernier message: 12/01/2014, 11h53
  2. [AC-2007] Calculer un compte de sous-formulaire dans un formulaire
    Par othke dans le forum IHM
    Réponses: 5
    Dernier message: 13/05/2010, 08h07
  3. Problème de calcul solde
    Par Nathalys79 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 15/02/2010, 10h06
  4. [AC-2003] Requete Calcul Solde
    Par RoZyk dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 11/12/2009, 12h13
  5. Procédure calculer solde
    Par fouz12 dans le forum Débuter
    Réponses: 1
    Dernier message: 24/10/2008, 17h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo