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 :

Pivot dynamique et table complexe


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Chacha35
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 264
    Par défaut Pivot dynamique et table complexe
    Bonjour,

    J'ai trouver en bas de cette page un moyen de faire ce que je veux par contre pour avoir la bonne table de départ j'ai des sous requetes.

    Je voulais utiliser un WITH AS et me servir de cette table après dans mon pivot mais ça ne marche pas.

    J'ai SQL server 2005.

    Au final dans ma table j'ai

    Code du fournisseur | Date | Quantité
    fournisseur1 | date1 |qté1f1
    fournisseur1 | date2 |qté2f1
    fournisseur1 | date3 |qté3f1
    fournisseur2 | date1 |qté1f2
    fournisseur2 | date2 |qté2f2
    fournisseur2 | date3 |qté3f3


    et je souhaite avoir :

    Code fournisseur | date1 | date2 | date3

    fournisseur1 | qté1f1 | qté2f1 | qté3f1
    fournisseur2 | qté1f2 | qté2f2 | qté3f2

    avec somme sur les quantités.

    Est-ce que la procédure de la page web est correcte? Est-ce que je peux me servir de WITH ?

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Essayez ainsi :
    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
    WITH MaTable (four_cd, col_dt, qte) AS
    (
    select 'four1', 'date1', 'qté1f1' union all
    select 'four1', 'date2', 'qté2f1' union all
    select 'four1', 'date3', 'qté3f1' union all
    select 'four2', 'date1', 'qté1f2' union all
    select 'four2', 'date2', 'qté2f2' union all
    select 'four2', 'date3', 'qté3f2'
    )
      ,  MaVue (four_cd, date1, date2, date3) AS
    (
      select *
        from MaTable
       pivot (max(qte) for col_dt in ([date1], [date2], [date3])) as pvt
    )
    select * from MaVue;
     
    four_cd date1  date2  date3
    ------- ------ ------ ------
    four1   qté1f1 qté2f1 qté3f1
    four2   qté1f2 qté2f2 qté3f2
    L'aggrégat est un max car dans votre exemple ce sont des chaînes de caractères, mais avec des nombres vous pouvez utiliser une somme sans problème.

  3. #3
    Membre éclairé Avatar de Chacha35
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 264
    Par défaut
    Merci pour votre réponse.

    Mais le problème c'est que je ne sais pas combiens j'ai de fournisseurs dans ma table, ni combien de dates.

    Je charge ma table grâce à des paramètres que je passe à ma procédure stockée.

    D'où le titre du topic : Pivot dynamique.

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Le nombre de fournisseurs importe peu, ce qui compte c'est le nombre de date.

    Vous pouvez construire votre requête de façon dynamique dans votre procédure.

  5. #5
    Membre éclairé Avatar de Chacha35
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 264
    Par défaut
    Exactement mais je ne vois pas du tout comment faire.

    Dans mon lien, en ba s de page il y a un exemple, mais c'est assez compliqué.

    Si quelqu'un avait un exemple ça serait super.

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Qu'est-ce qui vous rebute dans l'exemple de fin de page ?

    L'idée c'est de faire la liste distincte des dates, de concaténer dans une chaîne de caratère la partie fixe de la requête avec cette liste, puis d'exécuter la chaîne.

Discussions similaires

  1. Pivot d'une table dynamiquement
    Par yappp dans le forum Requêtes
    Réponses: 4
    Dernier message: 27/03/2013, 10h36
  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 un lien "dynamique" de tables??
    Par fram069 dans le forum Access
    Réponses: 1
    Dernier message: 10/04/2006, 13h43
  4. [MSSQL 2000] Pivot dynamique
    Par Dark Matter dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 23/02/2006, 16h59
  5. [DTS]générer dynamiquement des tables Postgres 8.0
    Par CetTer dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 08/10/2005, 10h35

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