Pivoter une table avec Sql Server 2005 >
Posted on Thursday 22 July 2010, 23:08 - Décisionnel - Permalink Tweet
- Article
- |
- Comments(0)
- |
- Attachments(0)
Pivoter une table peut avoir un interêt, notamment pour faire du reporting. Voici un exemple simple d'utilisation ce cette commande SQL
Table initiale
On a au départ , des données stockées dans une table, selon le modèle code/valeur, les deux colonnes représentant une clé primaire.
------------- |TABLE_BASE | ------------- |Code k | |value k | -------------
Table Finale
On souhaite obtenir l'ensemble des valeurs associées à un code, sur une seule ligne. Dans cet exemple, on sait qu'il n'existe au maximum, que 9 valeurs associées à un même code.
------------- |TABLE_PIVO | ------------- |Code k | |value1 | |value2 | |value3 | |value4 | |value5 | |value6 | |value7 | |value8 | |value9 | -------------
Commande SQL
Ici, on utilise un Rank pour générer la données sur laquelle sera faite le Pivot.
[SQL] /* Code SQL pour gérérer les données Pivotées */ WITH Options AS ( SELECT code, value, rank() over(PARTITION BY code order by value) as POS FROM TABLE_BASE ) SELECT * FROM Options PIVOT (MAX(value) FOR POS IN ([1],[2],[3],[4],[5],[6],[7],[8],[9]) ) AS pvt