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 :

Regrouper des champs dans un GROUP BY


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Regrouper des champs dans un GROUP BY
    Salut,

    Déjà voilà ma requête telle qu'elle est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT contact_id, category_tree_value, count(*) 
    FROM aexns_helpdesk.dbo.workitem 
    GROUP BY category_tree_value, contact_id
    Je prend un exemple :
    Pour un contact_id, la requête va me renvoyer disons 4 lignes avec 4 category_tree_value différents. Cependant, je voudrais regrouper 2 de ces 4 category_tree_value pour ne faire qu'un, pour pouvoir les accumuler sous un "nom" commun.
    C'est là que je cale, je ne vois pas comment faire. J'ai essayer avec un CASE, mais même si je donne le même nom aux 2 valeurs, elles sont toutes les 2 présentes sous le même nom, alors que je voudrais qu'elles soient regrouper.

    Merci de votre aide

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Le CASE me semble la bonne solution, peux-tu poster ce que tu as essayé avec CASE.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Voilà ma requête avec les CASE imbriqués (en réalité il doit en y avoir 6-7, je n'en ai mis que 2 ici)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT contact_id, 
    (CASE when category_tree_value LIKE 'Achat matériel%' THEN 'BESOIN' ELSE (CASE when category_tree_value LIKE 'Comment%' THEN 'SOUTIEN LOGICIEL' ELSE category_tree_value END) END), count(*) 
    FROM aexns_helpdesk.dbo.workitem 
    GROUP BY category_tree_value, contact_id
    Dans mon cas 'Achat matériel%', je vais avoir ces champs :
    Achat matériel / Poste fixe / Devis
    Achat matériel / Portable / Devis
    Achat matériel / Accessoire / Devis
    Achat matériel / Poste fixe / Aide au choix
    Achat matériel / Portable / Aide au choix
    Achat matériel / Accessoire / Aide au choix


    Et je voudrais donc les regrouper en 'BESOIN', mais ma requête va me sortir 6 lignes de BESOIN

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Facile

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT contact_id, 
    (CASE when category_tree_value LIKE 'Achat matériel%' THEN 'BESOIN' ELSE (CASE when category_tree_value LIKE 'Comment%' THEN 'SOUTIEN LOGICIEL' ELSE category_tree_value END) END), count(*) 
    FROM aexns_helpdesk.dbo.workitem 
    GROUP BY contact_id, CASE when category_tree_value LIKE 'Achat matériel%' THEN 'BESOIN' ELSE (CASE when category_tree_value LIKE 'Comment%' THEN 'SOUTIEN LOGICIEL' ELSE category_tree_value END) END
    tu peux faire un seul CASE, c'est d'ailleurs l'intérêt des CASEs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CASE when category_tree_value LIKE 'Achat matériel%' THEN 'BESOIN'    
         when category_tree_value LIKE 'Comment%' THEN 'SOUTIEN LOGICIEL' 
         ELSE category_tree_value END
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  5. #5
    Futur Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Merci, en fait c'était tout facile, mais il fallait y penser

  6. #6
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Cela ne marche pas avec tous les moteurs, mais pour être lisible tu peux essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT contact_id, 
    CASE WHEN category_tree_value LIKE 'Achat matériel%' THEN 'BESOIN'    
         WHEN category_tree_value LIKE 'Comment%' THEN 'SOUTIEN LOGICIEL' 
         ELSE category_tree_value END as Category,  count(*) 
    FROM aexns_helpdesk.dbo.workitem 
    GROUP BY contact_id, Category
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  7. #7
    Futur Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Pendant que j'y suis, une idée me vient. Est-il possible de faire un affichage de ce type :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     CONTACT    |    BESOIN      |    SOUTIEN LOGICIEL
    ____________|________________|______________________
     Roberto    |      5         |           9
     Gérard     |      1         |           0
    C'est à dire faire un count sur chaque cas... :

  8. #8
    Futur Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Vu que je travaille sous .NET, je crois que la meilleure solution est de reprendre mes données telles qu'elles et de les reformater manuellement...

Discussions similaires

  1. Regrouper des champs de même type dans la même table
    Par Marsupilami23 dans le forum Développement
    Réponses: 9
    Dernier message: 15/06/2011, 13h53
  2. Réponses: 7
    Dernier message: 21/05/2011, 11h34
  3. désélection des autres champs dans un groupe
    Par didi62 dans le forum QlikView
    Réponses: 0
    Dernier message: 18/04/2011, 21h32
  4. Importance de l'ordre des champs dans un Group by ?
    Par Noren dans le forum Langage SQL
    Réponses: 1
    Dernier message: 15/12/2007, 13h31
  5. Réponses: 4
    Dernier message: 24/03/2006, 15h08

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