Pivoter une table avec Sql Server 2005 >
Par jb le jeudi 22 juillet 2010, 23:08 - Décisionnel - Lien permanent
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.
/* 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