Using PIVOT and UNPIVOT.
UNPIVOT
effectue l'opération presque inverse de PIVOT
, en faisant tourner colonnes dans les rangées. Supposons que la table produite dans l'exemple précédent est stocké dans la base de données comme pvt
, et vous à faire pivoter les identificateurs de colonne Emp1
, Emp2
, Emp3
, Emp4
et Emp5
en valeurs de ligne qui correspondent à un fournisseur particulier. Cela signifie que vous devez identifier deux colonnes supplémentaires. La colonne qui contiendra les valeurs de la colonne que vous ROTATIVE (Emp1
, Emp2
, ...) seront appelés Employee
, et la colonne qui maintenir les valeurs qui résident actuellement sous les colonnes étant pivotée s'appelle Commandes. Ces colonnes correspondent à la colonne pivot_couleur et valeur_column, respectivement, dans la définition Transact-SQL . Voici la requête .
--Create the table and insert values as portrayed in the previous example.
CREATE TABLE pvt (VendorID int, Emp1 int, Emp2 int,
Emp3 int, Emp4 int, Emp5 int)
GO
INSERT INTO pvt VALUES (1,4,3,5,4,4)
INSERT INTO pvt VALUES (2,4,1,5,5,5)
INSERT INTO pvt VALUES (3,4,3,5,4,4)
INSERT INTO pvt VALUES (4,4,2,5,5,4)
INSERT INTO pvt VALUES (5,5,1,5,5,5)
GO
--Unpivot the table.
SELECT VendorID, Employee, Orders
FROM
(SELECT VendorID, Emp1, Emp2, Emp3, Emp4, Emp5
FROM pvt) p
UNPIVOT
(Orders FOR Employee IN
(Emp1, Emp2, Emp3, Emp4, Emp5)
)AS unpvt
GO
est ici un ensemble de résultat partiel.
VendorID Employee Orders
1 Emp1 4
1 Emp2 3
1 Emp3 5
1 Emp4 4
1 Emp5 4
2 Emp1 4
2 Emp2 1
2 Emp3 5
2 Emp4 5
2 Emp5 5
...
Merci pour cette réponse. Apprendre à utiliser PIVOT m'a permis d'économiser beaucoup de temps aujourd'hui !! –