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

Développement SQL Server Discussion :

SUM avec conditions


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 40
    Par défaut SUM avec conditions
    Re Bonjour à tous,

    J'ai une nouvelle demande pour vous. Merci de m'éclairer.
    Situation:
    J'ai une trois table : tablededonnées, tableclient, tablearemplir
    Dans tablededonnées j'ai :
    -Num palette
    -code client (clé étrangère (qui point vers tableclient),
    -Id_Prepa,
    -Date_Prepa,
    -quantité.
    Dans tableclient:
    -code client
    -Type (trois valeurs : "INT", "FRA", "EXP")
    Dans tablearemplir;
    -Id_Prepa (clé primaire)
    -Date_Prepa (clé primaire)
    -QT INT
    -QT FRA
    -QT EXP

    Je veux remplir les champs QT INT, QT FRA et QT EXP avec la somme de la colonne quantité (tablededonnées) pour chaque Type (table client) =>Donc jointure...

    Avec la commande merge je pêche sur la commande SELECT:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Id_Prepa as Id_Prepa, Date_Prepa as Date_Prepa,
    (Select SUM(quantité) FROM tablededonnées JOIN  tableclient ON tableclient.code client = tablededonnées.code client  Where tableclient.Type = 'INT') as QT INT
    FROM tablededonnées
    Group By Id_Prepa, Date_Prepa
    Pour na pas surcharger j'ai mis que le as QT INT (idem avec QT FRA,...)

    Le problème est que ce select me donne la qt total de tout les prépateurs et date.
    Ainsi, j'ai mes préparateurs qui ont tous préparer le même nb gigantesque de QT_Int (sont forts qd même).

    En fait le group by n'est pas pris en compte pour le SUM.
    Comment faire?

    Merci d'avance

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 136
    Par défaut
    Il s'agit là d'un PIVOT.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 40
    Par défaut
    Merci ça touche au but.
    Ca à l'air d'être la bonne direction.
    J'ai juste encore un soucis avec le group by. Apparement PIVOT et Group by, ça fait des étincelles. (Si vous avez des suggestions, je prends).
    Je reviens d'ici peu avec la solution ou des questions.
    Encore merci

    EDIT : J'ai trouvé il suffit de créer une table temporaire la nommer puis ("Group by Id_prepa, Date_prepa + CODECLIENT") puis de réaliser le pivot sur cette table.

  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,

    Pas besoin de passer par une table temporaire, vous pouvez faire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT		Id_prepa
    	,	date_prepa
    	,	SUM(CASE WHEN type = 'INT' THEN quantité END) AS SommeINT
    	,	SUM(CASE WHEN type = 'FRA' THEN quantité END) AS SommeFRA
    	,	SUM(CASE WHEN type = 'EXP' THEN quantité END) AS SommeEXP
    FROM 		tableclient c
    INNER JOIN 	tablededonnées d
    	ON 		c.code_client = d.code_client
    GROUP BY 	Id_prepa
    	,	date_prepa

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2014
    Messages : 40
    Par défaut
    Ah merci. Typiquement c'est ce que je cherchais à faire dès le début (Cf titre SUM avec conditions). Il me manquait juste la syntaxe.
    Maintenant je connais deux solutions. Merci

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

Discussions similaires

  1. Aide avec fonction SUM avec condition
    Par Beaudelicius dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/01/2012, 22h30
  2. Requête SUM avec conditions
    Par madsland dans le forum Langage SQL
    Réponses: 10
    Dernier message: 21/03/2011, 16h34
  3. Sum() et Sum(avec condition)
    Par titom100 dans le forum Requêtes
    Réponses: 2
    Dernier message: 13/05/2010, 16h49
  4. Sum avec condition
    Par lanjolanjo dans le forum Langage SQL
    Réponses: 8
    Dernier message: 15/10/2008, 18h53
  5. Faire un SUM avec conditions sans tables temporaires
    Par jonklay dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 03/01/2007, 09h39

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