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 :

Regroupement des champs


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 298
    Points : 111
    Points
    111
    Par défaut Regroupement des champs
    Bonjour,

    J'aimerais faire un regroupement selon certain critères.
    Voici un exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Id / Nom / Prénom / Date / Minutes / Activité / Groupe
    1  - Pont - Paul - 21/01/2011 / 300 / 1 / 1
    2  - Pont - Paul - 21/01/2011 / 300 / 1 / 2
    3  - Pont - Paul - 21/01/2011 / 300 / 1 / 3
    4  - Pont - Paul - 21/01/2011 / 300 / 1 / 4
    5  - Pont - Paul - 21/01/2011 / 140 / 2 / 1
    6  - Pont - Paul - 21/01/2011 / 140 / 2 / 2
    7  - Pont - Paul - 21/01/2011 / 140 / 2 / 3
    8  - Pont - Paul - 21/01/2011 / 140 / 2 / 4
    9  - Pont - Paul - 21/01/2011 / 200 / 3 / 1
    10 - Pont - Paul - 21/01/2011 / 200 / 3 / 2
    11 - Pont - Paul - 21/01/2011 / 200 / 3 / 3
    12 - Pont - Paul - 21/01/2011 / 200 / 3 / 4
    J'aimerais donc regrouper le nombre de minutes des activité 1 et 3 pour avoir ce résultat là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Id / Nom / Prénom / Date / Minutes / Activité / Groupe
    1  - Pont - Paul - 21/01/2011 / 500 / 1et3 / 1
    2  - Pont - Paul - 21/01/2011 / 500 / 1et3 / 2
    3  - Pont - Paul - 21/01/2011 / 500 / 1et3 / 3
    4  - Pont - Paul - 21/01/2011 / 500 / 1et3 / 4
    5  - Pont - Paul - 21/01/2011 / 140 / 2 / 1
    6  - Pont - Paul - 21/01/2011 / 140 / 2 / 2
    7  - Pont - Paul - 21/01/2011 / 140 / 2 / 3
    8  - Pont - Paul - 21/01/2011 / 140 / 2 / 4
    Cela fait des heures que je suis dessus mais je n'arrive pas à trouver de solution.

    Merci infiniment pour vos idées..
    Lucazzo

  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
    21 865
    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 : 21 865
    Points : 53 021
    Points
    53 021
    Billets dans le blog
    6
    Par défaut
    Il vous faut faire une requête récursive.
    Lisez ce que j'ai écrit à ce sujet : http://sqlpro.developpez.com/cours/s...te-recursives/

    A +

  3. #3
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select Nom , Prénom , Date , sum( Minutes) , 
    	case when Activité = 1 or Activité = 3 then '1 et 3' else cast( Activité as varchar) end Activité_out , 
    	Groupe
    from ma_table
    group by Nom , Prénom , Date , 
    	case when Activité = 1 or Activité = 3 then '1 et 3' else cast( Activité as varchar) end , 
    	Groupe
    Quelque chose dans ce goût-là ?
    Ton id, c'est pour l'affichage ou c'est indispensable ?

  4. #4
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 298
    Points : 111
    Points
    111
    Par défaut
    Pour reprendre la réponse de 7gyY9w1ZY6ySRgPeaefZ :

    Cela me donne bien le résultat voulu, par contre, étant donné que j'ai donné un exemple avec que 3 activités, il m'a bien regroupé les activités 1 et 3 mais moi dans mes données, j'ai environ 5 activités, donc il m'a regroupé les activités 2, 4 et 5 ! Alors que j'aimerais que ces informations restent non-groupée.

    Pour la réponse de SQL-Pro, la doc est excellente, mais j'ai beaucoup de peine à mettre en pratique mon cas avec votre solution de récursivité.

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 865
    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 : 21 865
    Points : 53 021
    Points
    53 021
    Billets dans le blog
    6
    Par défaut
    L'exemple donné dans l'article sur le trajet est la voie à suivre :
    1) on ajoute à chaque itération les minutes
    2) on concatène les activités.

    A +

  6. #6
    Invité
    Invité(e)
    Par défaut
    Au lieu de rester dans l'absolu, pourriez-vous vous conformer aux règles du forum avec des exemples mis en forme proprement, la ddl de vos tables ainsi que le résultat souhaité, on va gagné du temps.
    J'ai testé d'après ce que vous avec fourni et je ne comprend pourquoi vos activités 4 et 5 seraient regroupés ? C'est quoi le type de données des activités ?

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

Discussions similaires

  1. [MySQL] Regrouper des champs identiques
    Par Sof34 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 24/04/2009, 01h52
  2. Réponses: 4
    Dernier message: 19/08/2008, 16h04
  3. [Requête]Regrouper des champs d'un mème enregistrement
    Par jojo_perso dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 22/04/2007, 22h25
  4. Regrouper des champs par mois
    Par nou366 dans le forum Bases de données
    Réponses: 4
    Dernier message: 17/05/2006, 14h23
  5. Regrouper des champs dans un GROUP BY
    Par kaiserazo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 11/07/2005, 08h43

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