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 :

Faire un pivot dynamique


Sujet :

Développement SQL Server

  1. #1
    Membre régulier
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2013
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2013
    Messages : 212
    Points : 81
    Points
    81
    Par défaut Faire un pivot dynamique
    Bonjour ;
    sur Dlphi+Sql Server 2008 ,j'ai deux table master (num integer,nom varchar) et detail (num_d integer, num_perso,element varchar,note float) , champ de liaison master-detail:[ num=num_perso]
    j'ai réussi de faire un pivot sur les tables , voila l'mage de script
    Nom : Z.jpg
Affichages : 984
Taille : 29,4 Ko
    ce qui me donne le resultat suivante:
    Nom : o.jpg
Affichages : 994
Taille : 127,8 Ko
    Mon problème c'est comment faire la meme opération mais que le pivot soit dynamique , quand j'ajoute un nouveau élément sur la table Detail il s'affiche automatiquement sur le resultat de pivot .
    j'ai essayé avec ce code mais j'ai pas reussi :
    Nom : Sans titre.png
Affichages : 1013
Taille : 28,0 Ko
    A l'attente de vos aides , recevez mes respects et mes remerciements.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 731
    Points : 1 416
    Points
    1 416
    Le savoir est une nourriture qui exige des efforts.

  3. #3
    Membre régulier
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2013
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2013
    Messages : 212
    Points : 81
    Points
    81
    Par défaut
    Finalement j'ai trouvé la solution :
    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
    23
    24
    25
    26
    27
    28
     
    DECLARE @cols AS NVARCHAR(MAX),
        @query  AS NVARCHAR(MAX);
     
    SELECT @Cols= ISNULL(@Cols + ',','') 
           + QUOTENAME(element)
    FROM (SELECT DISTINCT element FROM 
    detail) AS Courses 
     
     
    set @query = 'SELECT [NUM],[NOM],  ' + 
    @cols + ' from 
                (
                    SELECT Master.Num, 
    Master.nom, Detail.Element, 
    Detail.Note
     FROM   Master AS Master INNER JOIN 
    Detail AS Detail ON Master.Num = 
    Detail.Num_perso 
               ) x 
                pivot 
                (
                    AVG (NOTE)
                    for ELEMENT in (' + @cols + ')
                ) p '
     
     
    execute(@query)
    le probleme qui reste c'est comment remplacer les valeurs null en 0????

  4. #4
    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,

    Pour remplacer les NULL par des 0 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    COALESCE(LaColonneNullable, 0)

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/09/2008, 14h18
  2. [MSSQL 2000] Pivot dynamique
    Par Dark Matter dans le forum Langage SQL
    Réponses: 10
    Dernier message: 19/02/2008, 10h30
  3. Comment faire une connexion dynamique à une base avec ADO?
    Par Borisam dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/03/2006, 14h22
  4. [Javascript] Faire un menu dynamique
    Par jenny50 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 28/02/2006, 12h11
  5. [MSSQL 2000] Pivot dynamique
    Par Dark Matter dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 23/02/2006, 16h59

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