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 :

Concaténation selon un champ


Sujet :

MS SQL Server

  1. #1
    Membre averti
    Homme Profil pro
    Consultant BI
    Inscrit en
    Mai 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant BI
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 29
    Par défaut Concaténation selon un champ
    Bonjour bonjour !

    Je souhaiterais réaliser une concaténation des valeurs d'une colonne ... selon les valeurs d'un champ.

    Un petit exemple pour illustrer :

    Id...Nom...Prenom...Statut
    1....Lac....Xavier........1
    2....Des....Michel........1
    3....Lic.....Bertrand.....2
    4....Del.....Fredéric.....1
    5....Isi......Alphonse....2

    J'aimerais obtenir comme résultat :
    Statut...ConcacNom
    1..........Lac-Des-Del
    2..........Lic-Isi

    Avec des valeurs à la place des noms ça passerait tout seul, avec un SUM et un GROUP BY, mais pour la concaténation de chaînes de caractères, je ne vois pas vraiment comment le faire !

    Merci pour votre temps de lecture / aide.
    Lobay

  2. #2
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Par défaut
    Utilises les fonctions CONCAT ou GROUP_CONCAT

  3. #3
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    GROUP_CONCAT devrait pouvoir vous aider a réaliser ce que vous voulez faire.

    Du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT
     Statut,
     Group_concat ( Nom ORDER BY id SEPARATOR '-') as ConcacNom
    FROM
      MaTable
    GROUP BY 
      Statut
    Bon courage

  4. #4
    Membre averti
    Homme Profil pro
    Consultant BI
    Inscrit en
    Mai 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant BI
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 29
    Par défaut
    Merci pour vos deux réponses.

    J'avais testé un CONCAT avec une requête de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT
      STATUT AS Statut,
      CONCAT(NOM) AS ConcacNom
    FROM
      MaTable
    GROUP BY 
      STATUT
    Mais ça me retourne le message d'erreur suivant (alors que CONCAT apparaît en bleu) :
    'CONCAT' is not a recognized built-in function name.

    J'ai essayé avec GROUP_CONCAT, j'ai la même erreur mais il n’apparaît même pas en bleu.

    En cherchant un peu sur internet, j'ai vu que c'était parcequ'il fallait que j'indique le schéma ? dbo.CONCAT ne marche pas et je ne vois pas pourquoi il faudrait préciser le schéma d'une fonction de base (je suppose que c'est comme un SUM, qui marche très bien).

  5. #5
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Par défaut
    Si tu es bien sous MySQL cela devrait fonctionner!

    Qu'utilises tu pour executer ta requête?

  6. #6
    Membre averti
    Homme Profil pro
    Consultant BI
    Inscrit en
    Mai 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant BI
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 29
    Par défaut
    Hmmm, j'ai du faire une boulette sur l'endroit où j'ai posté mon message ... !

    J'exécute ça sous SQL Serveur Management Studio, pas MySQL ...

    Je supprime ici et je reposte dans la bonne partie ou il est possible de migrer mon sujet ?

    Désolé ...

  7. #7
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Un post ressemblant a votre probleme ici

    Bon courage

  8. #8
    Membre averti
    Homme Profil pro
    Consultant BI
    Inscrit en
    Mai 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant BI
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 29
    Par défaut
    Je n'ai pas compris complètement la méthode mais j'ai pour l'instant réussi à adapter à une table plus simple que celle que j'utilise.

    J'espère maintenant réussir à adapter à la table voulue. C'était plus simple avec MySQL

    Merci pour les réponses en tout cas !

  9. #9
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 29
    Par défaut
    En MsSQL, j utilise ce principe qui fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DECLARE @ListAcheteur VARCHAR(1000)
    SET @ListAcheteur = ''
     
    SELECT @ListAcheteur = @ListAcheteur + Acheteur+ ';'
    	FROM CmdPos
    	WHERE Acheteur is not null
    		--AND ...
    (Utilisé pour un petit job qui envoit un Email à certains acheteurs... j'entends déjà certains s'étrangler avec ce genre de code )

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

Discussions similaires

  1. Concaténation de plusieurs champs dans un objet
    Par bastoonet dans le forum Débuter
    Réponses: 3
    Dernier message: 27/09/2006, 11h13
  2. requete concatené selon les champ sont renseignés ou pas
    Par Damish dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 22/09/2006, 14h14
  3. Tri selon un champ dans un état
    Par soso78 dans le forum Access
    Réponses: 4
    Dernier message: 14/06/2006, 09h38
  4. Couleur differente selon un champ dans zone liste
    Par banbanne dans le forum Access
    Réponses: 1
    Dernier message: 14/03/2006, 10h50
  5. ordonner selon un champ d'un autre table
    Par Mister dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/10/2003, 14h40

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