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 :

Fusion des lignes en un seul


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 53
    Par défaut Fusion des lignes en un seul
    Bonjour,
    j'ai un question à propos la possibilité d'insérer plusieurs lignes en un seul (fusion)
    Exemple
    si j'ai un tableau tab 1 qui contient :
    Colonne :
    DOCTYPE:
    'DOC1'
    'DOC2'
    'DOC3'
    'DOC4'
    'DOC5'
    je veux que je fusionne ses lignes en un seul ligne dans un autre tableau DOCTYPE2
    et le resultat est la suivante
    Colonne:
    DOCTYPE
    'DOC1\DOC2\DOC3\DOC4\DOC5'
    je travail sur SQL SERVER 2005

    Merci d'avance pour toute proposition

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 55
    Par défaut
    Bonjour,

    Code sql : 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
    DECLARE @Chaine varchar(max)
    SET @Chaine=''
    DECLARE @nouvChaine varchar(max)
    SET @nouvChaine=''
    DECLARE @docType Varchar(40)
    DECLARE #Doctype CURSOR
    FOR SELECT DOCTYPE FROM tab1
    OPEN #Doctype
    FETCH #Doctype INTO @docType
    WHILE(@@fetch_status=0)
     BEGIN
     
        SET @Chaine=@Chaine+@docType+'\'
     
     FETCH #Doctype INTO @docType
     END
    SET @nouvChaine=substring(@Chaine,0,len(@Chaine))
    --ici tu fais ta requete d'insertion en utilisant la variable @nouvChaine contient les valeurs de la colonne
    --DOCTYPE de table tab1 sous forme de val1\val2\...
    CLOSE #Doctype
    DEALLOCATE #Doctype

    a+

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    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 998
    Billets dans le blog
    6
    Par défaut
    Oulala le vilain curseur !!!! Inutile d'utiliser une telle chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DECLARE @RESULT VARCHAR(max);
    SET @RESULT = '';
    SELECT @RESULT = @RESULT + '\ ' + DOCTYPE
    FROM   MaTable
    ORDER BY DOCTYPE;
    SELECT SUBSTRING(@RESULT, 1, LEN(@RESULT) - 1) AS RESULTAT;
    Cela dit c'est le genre d'idiotie à éviter absolument. Un SGBDR n'est pas fait pour faire de la présentation !!!
    A Lire : http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L9

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 55
    Par défaut
    bonjour,

    merci SQLPro pour ton Eclaircissement, mais j'ai une petite remarque sur ton code concernant la requete select, je pense qu'elle devra etre comme cela:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT @RESULT = @RESULT +DOCTYPE +'\'



    a++

  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 998
    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 998
    Billets dans le blog
    6
    Par défaut
    Excusez moi à l'avance d'être un peu violent, mais faire bosser des gens à votre place, sans donner dès le départ ce que vous voulez faire exactement, c'est faire perdre du temps aux gens et c'est aussi les prendre pour des cons.

    Je vais sans doute me faire encore pourrir par mes confrères modérateurs, (alors que personnellement je ne modère jamais), mais à l'avenir postez des le départ toutes les conditions de votre problème.

    De surcroit vous n'avez pas respecté la charte de postage de ce forum qui vous demande de poster le DDL de vos tables (CREATE TABLE...) ainsi qu'un jue d'essais sous forme INSERT....
    http://www.developpez.net/forums/d96...vement-poster/

    Donc, commencez par respecter les règles, nous pourrons alors vous aider !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 53
    Par défaut
    Merci c'est effectivement ça que je cherche mais il ya un petit soucis
    le voila : On fait j'ai deux colonnes
    id | Colonne1
    1 | DOC1
    1 | DOC2
    1 | DOC3
    1 | DOC4
    1 | DOC5
    1 | DOC6

    et ce que je veux c'est faire un groupe by et le résultat c'est comme ça
    id |Colonne1
    1 |'DOC1\DOC2\DOC3\DOC4\DOC5\DOC6'

    Merci d'avance

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/06/2015, 10h21
  2. Réponses: 4
    Dernier message: 10/12/2013, 10h17
  3. [AC-2010] Fusion des lignes d'un champ
    Par authou dans le forum VBA Access
    Réponses: 1
    Dernier message: 28/01/2013, 17h39
  4. grouper des lignes en un seul avec des conditions
    Par afrozeen dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 22/05/2009, 11h07
  5. SQL : Regrouper des lignes dans une seule colonne
    Par manoir62 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/02/2009, 18h06

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