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 :

[2005] Utilisation de PIVOT


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut [2005] Utilisation de PIVOT
    Bonjour,

    j'ai bcp de mal à comprendre l'utilisation de PIVOT et UNPIVOT.
    Est-ce que par exemple vous pourriez me dire comment avec ces opérateurs je peux obtenir une table (résultat de requête) dont les colonnes seraient 1, 2, ..., 9 avec une ligne où il n'y aurait que des valeurs 'A' pour chaque colonne et une ligne où il n'y aurait que des valeurs 'B' ?

    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
    29
    30
    31
    32
    33
    34
    35
     
    ; WITH AB (
     Lettre
    )
    AS
    (
     SELECT 'A'
     UNION
     SELECT 'B'
    )
    , 1A9 (
     Chiffre
    )
    AS
    (
     SELECT 1
     UNION
     SELECT 2
     UNION
     SELECT 3
     UNION
     SELECT 4
     UNION
     SELECT 5
     UNION
     SELECT 6
     UNION
     SELECT 7
     UNION
     SELECT 8
     UNION
     SELECT 9
    )
     
    ???
    Citation Envoyé par Résultat souhaité
    1|2|3|4|5|6|7|8|9
    A|A|A|A|A|A|A|A|A
    B|B|B|B|B|B|B|B|B
    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    L'utilisation des opérateurs PIVOT et UNPIVOT requiert l'utilisation d'une fonction d'aggrégation. Les colonnes proviennent des valeurs du SELECT.
    Un bon exemple par Pinal Dave ici.

    Je suppose que vous l'avez lu, mais je le répète : ces deux opérateurs ne sont pas ensemblistes de par le simple fait qu'ils gèrent de la présentation de données, ce qui est normalement à déplacer du côté de l'application cliente de la base de données

    @++

  3. #3
    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
    Citation Envoyé par elsuket Voir le message
    Je suppose que vous l'avez lu, mais je le répète : ces deux opérateurs ne sont pas ensemblistes de par le simple fait qu'ils gèrent de la présentation de données, ce qui est normalement à déplacer du côté de l'application cliente de la base de données
    Mais non mais non, si vous avez l'œil vous aurez reconnu :
    http://www.developpez.net/forums/d82...hallenge-15-a/

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Oui , mais l'introduction est pourtant claire :

    This challenge is derived from a realistic reporting scenario that requires the transformation of rows into columns. This is commonly known as a matrix, pivot, or crosstab query
    Ce qui est en gras dans la citation peut tout à fait être traité par une application SSRS, ou par Excel, qui sont conçus pour cela

    @++

  5. #5
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Citation Envoyé par elsuket Voir le message
    Oui , mais l'introduction est pourtant claire :

    Ce qui est en gras dans la citation peut tout à fait être traité par une application SSRS, ou par Excel, qui sont conçus pour cela

    @++
    Effectivement tu as raison, je pense qu'ici il faut savoir que cela existe même si cela reste de la cosmétique ... et en terme de performance ce n'est pas ce qu'il y a de mieux .. Je crois qu'on est toujours d'accord hein

    Cependant il arrive que même sur Excel, le client final veuille disposer de ses données sous la forme finale , sans avoir à faire un tableau croisé dynamique (si si j'ai vu ) donc l'utilisation de l'opérateur PIVOT ou SELECT avec des CASES devient obligatoire ... Bien sûr il faut faire le choix entre comodité et performance dans ce cas là.

    >> Sergejack : Cela me paraît difficile de faire ce que vous voulez ... l'opérateur PIVOT aggrège les données (COUNT, AVG, MAX etc ...) comme pour un tableau dynamique sur Excel. La requête que vous voulez sortir ne se base pas sur ce principe ...

    ++

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    J'ai trouvé comment faire.

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Mais non mais non, si vous avez l'œil vous aurez reconnu :
    http://www.developpez.net/forums/d82...hallenge-15-a/
    Pas exctement, c'est bien parce les tsql challenge que mon intention a été retenue sur PIVOT/UNPIVOT depuis la solution au challenge 11 (11, je crois).

    Mais, c'est pour une requête à usage personnel que j'aimerais comprendre mieux PIVOT et UNPIVOT.

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

Discussions similaires

  1. [SQL SERVER 2005] Utilisation de Exec dans une fonction ?
    Par Dadou74 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 22/09/2006, 22h09
  2. [VB.NET 2005] Utilisation Api Avifil32
    Par guillaume1998 dans le forum C++/CLI
    Réponses: 1
    Dernier message: 01/09/2006, 14h09
  3. [VB 2005] Utilisation de la classe Clipboard
    Par Bob Langlade dans le forum Windows Forms
    Réponses: 1
    Dernier message: 12/05/2006, 03h20
  4. [VB 2005] Utilisation DLL - fichier C
    Par Carew dans le forum Windows Forms
    Réponses: 17
    Dernier message: 06/05/2006, 18h09
  5. utilisation de "PIVOT" et TRANSFORM"
    Par boris_ska dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 15/06/2005, 13h00

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