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 d'une colonne


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut concaténation d'une colonne
    bonjour

    j'ai une requete qui devrait me retourner un truc du type

    1 aa
    1 bb
    1 cc
    2 ii
    2 ff

    et je voudrais

    1 aa bb cc
    2 ii ff

    (avec d'ailleurs des sauts de lignes entre chaque valeur à concaténer)

    dans les agrégation possibles je trouve ca dommage qu'il n'y ait pas un truc de concaténation

    et donc y a t il un moyen autre de le faire ?

    merci
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Par défaut
    sql serveur 2000 ou 2005 ? Avec 2005, sql pro utilise les CTE recursive.
    Avec 2000, il n'y a pas de solution propre, vous pouvez écrire une fonction.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 60
    Par défaut
    Vous pouvez utiliser une fonction avec comme parametre le premier champs

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    je suis sous 2005

    écrire une fonction oui, j'aurais su faire, mais ça m'embête d'écrire 50 fonctions pour toutes les fois ou je vais en avoir besoin

    pour les cte, j'ai regardé un peu ce que donne with, mais je comprends pas trop comment l'utiliser

    je me suis fait un jeu d'essai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    create table toto (a int, b varchar(10))
    insert into toto values (1,'aa')
    insert into toto values (2,'bb')
    insert into toto values (2,'cc')
    insert into toto values (1,'dd')
    y me reste plus qu'à trouver le with qui va bien
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    j'ai réussi à écrire ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    WITH recur    (a,b) AS
         (SELECT to1.a, cast('' as varchar(8000))       FROM   toto to1 inner join toto to2 on to1.a = to2.a 
    		union all 
    	  select toto.a,toto.b + ',' + recur.b from toto inner join recur on toto.a = recur.a )
     
     
    SELECT *
    FROM   recur

    mais ca plante en disant qu'il y a trop de récursivité, comment y mettre fin quand j'ai traité toutes les données ?
    (dans ma vraie table, j'ai une clé unique)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Par défaut
    desole, je n'ai pas le temps de resoudre proprement ton probleme mais sql pro t'a mache le travail dans cet article.

    http://sqlpro.developpez.com/cours/s...recursives/#LX

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    mouais ...

    c'est vachement illisible par rapport à une fonction quand même

    est-ce plus rapide au moins ?

    et est-ce lisible une fois qu'on a compris le truc ?
    (enfin je comprends comment c'est traité, donc je peux pas arriver à le lire)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. [XL-2010] Concaténer toute une colonne Excel vers une ligne Word
    Par elwy07 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 13/02/2015, 19h38
  2. [9i]Concaténation d'une colonne
    Par gigigao dans le forum SQL
    Réponses: 10
    Dernier message: 18/09/2007, 15h34
  3. concaténer sur toute une colonne
    Par melodyyy dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/12/2006, 14h20
  4. Concaténer toutes les lignes d'une colonne
    Par metalcoyote dans le forum Oracle
    Réponses: 6
    Dernier message: 10/05/2006, 15h51
  5. Concaténer des lignes d'enregistrements dans une colonne
    Par dany13 dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 08/07/2005, 21h56

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