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

Développement SQL Server Discussion :

Afficher des colonnes pour des lignes répétitives dans une ligne [2012]


Sujet :

Développement SQL Server

  1. #1
    Nouveau membre du Club

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Fidji

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 22
    Points : 29
    Points
    29
    Billets dans le blog
    1
    Par défaut Afficher des colonnes pour des lignes répétitives dans une ligne
    bonjour tous le monde
    j'ai ce tableau commande achat par client
    NumClient NumComande CodeArticle
    1 1 5240
    1 1 5241
    1 1 5242
    1 2 5243
    1 2 5240
    1 2 5244
    j'aimré voir une résutat comme ça :

    NumClient NumComande CodeArticle
    1 1 5240 5241 5242
    1 2 5243 5240 5244

    est ce que c'est possible?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Ta question n'est pas vraiment claire.

  3. #3
    Nouveau membre du Club

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Fidji

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 22
    Points : 29
    Points
    29
    Billets dans le blog
    1
    Par défaut j'ai ajouté les tables est ce que vous pouvez m'aider
    j'ai ajouté les tables est ce que vous pouvez m'aider

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 786
    Points
    30 786
    Par défaut
    Qu'as-tu déjà essayé comme requête ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Nouveau membre du Club

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Fidji

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 22
    Points : 29
    Points
    29
    Billets dans le blog
    1
    Par défaut
    bon, honnêtement j'ai cherché sur le net et je trouve qu'il y a une fonction Pivot mais j'ai rien compris , et le premier tableau c'est la résultat de mon requete c'est une requete simple :
    select NUMClient,NumComande,Numarticle
    from Table1
    Where NumComande in ('1','2')
    est ce que la fonction pivot marche ou bien il y a autre méthode
    Merci d'avance

  6. #6
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 147
    Points : 7 392
    Points
    7 392
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Ce que tu cherches à faire, c'est un "GROUP_CONCAT".

    Cette fonction non normée, issue de MySQL n'est pas supportée par SQL Server.

    Il existe plusieurs méthodes pour la simuler.

    Tu en trouveras notamment une ici (ainsi qu'un SPLIT, même si depuis la version 2016 le SPLIT est géré nativement par SQL Server)

    https://www.developpez.net/forums/d1...utilisant-clr/
    On ne jouit bien que de ce qu’on partage.

  7. #7
    Nouveau membre du Club

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Fidji

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 22
    Points : 29
    Points
    29
    Billets dans le blog
    1
    Par défaut
    j'ai le sql serveur version 2012 est ce qu'il supporte le split ?

  8. #8
    Nouveau membre du Club

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Fidji

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 22
    Points : 29
    Points
    29
    Billets dans le blog
    1
    Par défaut
    ok, j'ai lu le contenu de votre lien mais il semble que vous deviez créer des classes dans les studios visuels, je ne travaille jamais avec et actuellement j'utilise sql server studio manager pour collecter les informations, je ne sais pas comment utiliser visuel stodio

  9. #9
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 147
    Points : 7 392
    Points
    7 392
    Billets dans le blog
    1
    Par défaut
    Oui, il est impératif de compiler les DLL avec Microsoft Visual Studio.

    Vous pouvez trouver ici la version "Community" (gratuite) :
    https://www.visualstudio.com/fr/downloads/

    Après, si vous n'avez jamais utilisé Visual Studio, je vous conseille vivement de vous faire assister d'une personne qui connait déjà : rien que pour choisir les composants à installer ou le type de projet à créer, sans aucun recul ça peut vite être déroutant.

    -- Edit : Voici une version compilée "as is".
    Il n'est pas impossible qu'elle ne fonctionne pas avec SQL Server 2012, car je ne l'ai jamais déployée sur cette version et mon target était la version 2014. Recompiler serait donc plus prudent.

    Après, pour les explications de comment l'installer et l'utiliser, je te laisse voir dans l'autre topic.
    Fichiers attachés Fichiers attachés
    On ne jouit bien que de ce qu’on partage.

  10. #10
    Nouveau membre du Club

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Fidji

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 22
    Points : 29
    Points
    29
    Billets dans le blog
    1
    Par défaut
    J'ai eu une idée je l'ai mis sur cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select NumClient,NumComande,substring((select ','+ CodeArticle from CommandeAchat as c where c.NumClient = d.NumClient and c.NumComande = d.NumComande ),2,400) 
    from CommandeAchat d
     
    group by NumClient,NumComande
    mais j'ai un message d'erreur:
    no valid sql statement ! error near : ),2,400) from CommandeAchat d

    group by NumClient,NumComande
    est-ce que cela a du sens les gars ?

  11. #11
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Non, car la sous requête renverra plusieurs lignes, or dans ce contexte il faut une valeur scalaire.

    Mais vous pouvez, sur ce principe, passer par du XML :

    (pas testé) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select NumClient,NumComande,substring((select ','+ CodeArticle from CommandeAchat as c where c.NumClient = d.NumClient and c.NumComande = d.NumComande FOR XML PATH('')),2,400) 
    from CommandeAchat d
     
    group by NumClient,NumComande

  12. #12
    Nouveau membre du Club

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Fidji

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 22
    Points : 29
    Points
    29
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Apparemment, sql server management studio ne supporte pas for xml path () parce que j'ai ce message:
    Msg 6850, Level 16, State 1, Line 1
    Row name ' ' contains an invalid XML identifier as required by FOR XML; ' '(0x0020) is the first character at fault.

  13. #13
    Nouveau membre du Club

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Fidji

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 22
    Points : 29
    Points
    29
    Billets dans le blog
    1
    Par défaut
    bonjour a tous
    j'ai réussi à le faire, ça marche parfaitement, grâce à devlopez.net merci a tous le monde

  14. #14
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 760
    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 760
    Points : 52 541
    Points
    52 541
    Billets dans le blog
    5
    Par défaut
    Si vous êtes avec SQL Server 2016, utilisez STRING_AGG

    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/ * * * * *

  15. #15
    Nouveau membre du Club

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Fidji

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 22
    Points : 29
    Points
    29
    Billets dans le blog
    1
    Par défaut
    Merci bien voici ma requete ça marche bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    select distinct d.los,d.cutgo_muster,substring((select distinct ',',c.auftnr from alcimdb.dbo.cutgo_cluster_unit c where c.los = d.los and c.cutgo_muster = d.cutgo_muster and  c.cutgo_lauf = '25621'   FOR XML PATH ('c.auftnr') ),2,400) ,
    x.lastmodzeit "date heure",
    case when x.glasart = '134' then 'LOW-E' 
            when x.glasart = '104' then 'Float' end "Type de Verre",
    ((x.flaeche)/19.26)*100 "% Optimisation",
     x.flaeche "Surface Utile",
    x.tisch_id
    from alcimdb.dbo.cutgo_cluster_unit d,alcimdb.dbo.xopt_statistik_jumbo x
    where d.cutgo_lauf = '25621'
    and d.los=x.opt_run
    and d.cutgo_muster=x.muster
    and d.cutgo_lauf=x.jobid
    order by x.lastmodzeit

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

Discussions similaires

  1. [XL-2010] Référence des colonnes d'un tableau excel dans une macro
    Par BigBill_125 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/11/2017, 12h05
  2. Réponses: 21
    Dernier message: 19/09/2011, 13h57
  3. récupérer des mots séparés par un espace dans une ligne
    Par laurentze dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 14/06/2010, 16h04
  4. Réponses: 0
    Dernier message: 02/01/2009, 15h40
  5. Choisir une colonne suivant le nom mis dans une ligne
    Par Masmeta dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/02/2008, 15h27

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