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

Langage SQL Discussion :

Double Somme sur la même colonne avec condition


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Inscrit en
    Février 2004
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Double Somme sur la même colonne avec condition
    Bonjour,

    J'ai une table qui ressemble à cela:

    Op Sens Montant
    1 in 100
    1 in 50
    1 out 20
    2 in 30
    3 out 50
    3 in 20

    Je veux une requête SQL qui génère la somme des montants "in" - la somme des montants "out". La requête va générer donc la table suivante :

    Op Montant
    1 130 = (100+50)-20
    2 30
    3 -30 = 20-50

    Merci d'avance

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 102
    Points : 28 387
    Points
    28 387
    Par défaut
    Ce devrait être assez facile en combinant un regroupement (GROUP BY) avec une expression conditionnelle (CASE).
    Quelque chose du type :
    Somme de (Si Sens vaut "in" alors Montant sinon - Montant) regroupé par Op

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 7
    Points : 13
    Points
    13
    Par défaut
    Salut,

    Commet l'a indiqué al1_24 la combinaison du GROUP BY et CASE devrait résoudre ton problème, ce qui donne la requête suivante:

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT Op, SUM(case Sens WHEN 'in' THEN Montant when 'out' then -Montant END)
    FROM LATABLE
    GROUP BY Op

  4. #4
    Candidat au Club
    Inscrit en
    Février 2004
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup,
    problème résolu.

    En fait j'ai utilisé IIF (Access 2007) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Op, SUM(IIF(Sens="in",Montant,-Montant)) AS somme
    FROM depense
    GROUP BY Op;

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

Discussions similaires

  1. Sommes sur 2 colonnes avec conditions
    Par Trady dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 11/03/2014, 12h06
  2. Un SELECT sur une même colonne avec ID différents
    Par grandthor dans le forum Requêtes
    Réponses: 1
    Dernier message: 11/08/2011, 19h21
  3. deux sommes sur une même colonne
    Par nurdo dans le forum Hibernate
    Réponses: 0
    Dernier message: 29/12/2009, 18h11
  4. [VBA-E] Minimum d'une colonne avec condition sur autre colonne
    Par Currahee dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/05/2007, 17h01
  5. [Oracle] Update sur 1 colonne avec condition existence (SUBSTR)
    Par magic charly dans le forum Langage SQL
    Réponses: 6
    Dernier message: 20/04/2006, 13h57

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