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 :

Comptage dans la même table mais avec des conditions différentes


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 69
    Points : 34
    Points
    34
    Par défaut Comptage dans la même table mais avec des conditions différentes
    Bonjour,

    J'ai une fois de plus besoin de votre aide pour résoudre un petit problème.

    Disons que j'ai une table de cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    TYPEFACT  COMMERCIAL CA
    F        JEAN          12 
    F        JEAN          20
    F        ALAIN         22 
    A        JEAN           -2
    A        JEAN          -5 
    F        ALAIN          8
    Le but étant d'obtenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    COMMERCIAL CA(F)  CA(A)
    JEAN       32     -7
    ALAIN      30      0
    J'ai essayé cela, mais sans succès :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T1.COMMERCIAL,SUM(T1.CA),SUM(T2.CA)
      FROM (SELECT COMMERCIAL,CA FROM MATABLE WHERE TYPEFACT='F') T1
      INNER JOIN (SELECT COMMERCIAL,CA FROM MATABLE WHERE TYPEFACT='A') T2 ON T1.COMMERCIAL=T2.COMMERCIAL GROUP BY T1.COMMERCIAL
    Pourriez-vous svp m'aider en me disant ou est mon erreur.

    Merci d'avance.

    Vincent

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 84
    Points : 80
    Points
    80
    Par défaut
    Bonjour,

    Je pense que ceci peut faire l'affaire, sauf avis contraire :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT commercial, SUM(CASE WHEN typefact = 'F' THEN ca ELSE 0 END) AS CAF, SUM(CASE WHEN typefact = 'A' THEN ca ELSE 0 END) AS CAA
    FROM ta_table
    GROUP BY commercial

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 69
    Points : 34
    Points
    34
    Par défaut
    Merci pour ta réponse.

    Effectivement, ça doit marché sous cette forme.
    Dans mon application réelle, qui est plus complexe que l'exemple, j'ai besoin d'une gestion par sous-requète.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 69
    Points : 34
    Points
    34
    Par défaut
    En fait, j'ai trouvé la solution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT COMMERCIAL,
      (SELECT SUM(CA) FROM MATABLE AS T1 WHERE TYPEFACT='F' AND T1.COMMERCIAL=T2.COMMERCIAL GROUP BY COMMERCIAL),(SELECT SUM(CA)
      FROM MATABLE AS T3 WHERE TYPEFACT='A' AND T1.COMMERCIAL=T3.COMMERCIAL)
      FROM MATABLE AS T1 
      GROUP BY COMMERCIAL
    Merci pour votre aide.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/03/2014, 16h29
  2. Réponses: 2
    Dernier message: 05/07/2012, 11h59
  3. Réponses: 4
    Dernier message: 27/06/2012, 20h40
  4. Réponses: 6
    Dernier message: 07/01/2011, 17h49
  5. [Débutant] Tracé sur même figure mais avec des ordonnées différentes
    Par telecofr dans le forum MATLAB
    Réponses: 2
    Dernier message: 07/10/2009, 16h28

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