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 plusieurs lignes dans une colonne


Sujet :

Langage SQL

  1. #1
    Membre confirmé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Points : 645
    Points
    645
    Par défaut regrouper plusieurs lignes dans une colonne
    Bonjour,

    J'avais vu ça il y a un temps mais impossible de retrouver comment faire :

    J'ai une requête qui me renvoie un résultat de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ida     idb
    1       59
    1       58
    2       78
    3       98
    3       102
    3       103
    J'aimerais la transformer pour avoir un résultat de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ida     idb
    1       59,58
    2       78
    3       98, 102, 103
    Quelqu'un peut-il me raffraichir la mémoire sur la manière de faire ?

    Je suis sur SQL server 2005.
    Je sais que désormais vivre est un calembour,
    La mort est devenue un état permanent,
    Le monde est aux fantômes, aux hyènes et aux vautours.
    Moi je vous dis bravo et vive la mort.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 383
    Points
    18 383
    Par défaut
    En pur SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    WITH MaTable (IdA, IdB)
    AS
    (
    SELECT 1,  59 UNION ALL
    SELECT 1,  58 UNION ALL
    SELECT 2,  78 UNION ALL
    SELECT 3,  98 UNION ALL
    SELECT 3, 102 UNION ALL
    SELECT 3, 103
    )
    SELECT IdA, STUFF((SELECT ',' + CAST(IdB AS VARCHAR(3))
                       FROM MaTable AS B
                       WHERE B.IdA = A.IdA
                       FOR XML PATH('')), 1, 1, '') AS children
    FROM MaTable AS A
    GROUP BY IdA;
     
    IdA         children
    ----------- ---------------
    1           59,58
    2           78
    3           98,102,103
    Vous pouvez également vous créer une fonction dédiée : recherchez LISTAGG avec "SQL Server 2005", vous devriez trouver plusieurs réponses.

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Ce que vous cherchez à faire est de la cosmétique et n'est pas le boulot du SGBDR mais du programme de présentation des données.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Membre confirmé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Points : 645
    Points
    645
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Ce que vous cherchez à faire est de la cosmétique et n'est pas le boulot du SGBDR mais du programme de présentation des données.
    Peu importe, je DOIS avoir une requête qui me sort ça. Pas de possibilité de faire autrement.

    Je sais bien que ce n'est pas très propre, mais c'est pour une extraction ponctuelle. Donc je ne vais pas commencer à me bricoler des vues en php ou autre juste pour ce besoin.

    En tous cas ça marche.

    Merci pour vos réponses.
    Je sais que désormais vivre est un calembour,
    La mort est devenue un état permanent,
    Le monde est aux fantômes, aux hyènes et aux vautours.
    Moi je vous dis bravo et vive la mort.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/06/2015, 20h46
  2. Regrouper plusieurs lignes dans une seule
    Par djinpark1 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 18/04/2013, 13h26
  3. [AC-2007] En-tête de colonne sur plusieurs lignes dans une list box
    Par Rémi GAUDINAT dans le forum IHM
    Réponses: 2
    Dernier message: 25/10/2010, 11h52
  4. SQL : Regrouper des lignes dans une seule colonne
    Par manoir62 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/02/2009, 18h06
  5. Texte sur plusieurs lignes dans une cellule de JTable
    Par JeanECN dans le forum Composants
    Réponses: 3
    Dernier message: 10/04/2006, 17h20

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