SQL transpose la table complète
J'ai besoin de faire la suite de la transposition dans MS SQL
à partir de:
Day A B
---------
Mon 1 2
Tue 3 4
Wed 5 6
Thu 7 8
Fri 9 0
À la suivante:
Value Mon Tue Wed Thu Fri
--------------------------
A 1 3 5 7 9
B 2 4 6 8 0
Je comprends comment le faire avec PIVOT
quand il y a une seule colonne (A), mais je ne peux pas comprendre comment le faire quand il y a plusieurs colonnes à transposer (A,B,...)
Exemple de code pour être transposée:
select LEFT(datename(dw,datetime),3) as DateWeek,
sum(ACalls) as A,
Sum(BCalls) as B
from DataTable
group by LEFT(datename(dw,datetime),3)
Structure De La Table:
Column DataType
DateTime Datetime
ACalls int
BCalls int
Toute aide sera très appréciée.
source d'informationauteur Selrac
Vous devez vous connecter pour publier un commentaire.
Afin de transposer les données dans le résultat que vous souhaitez, vous devrez utiliser à la fois le
UNPIVOT
et laPIVOT
fonctions.La
UNPIVOT
fonction prend laA
etB
colonnes et convertit le résultat en lignes. Ensuite, vous pourrez utiliser laPIVOT
fonction de transformer leday
de valeurs dans des colonnes:Voir SQL jouer avec la Démo.
Si vous utilisez SQL Server 2008+, vous pouvez utiliser
CROSS APPLY
avecVALUES
à unpivot les données. Vous code devrait être modifié comme suit:Voir SQL jouer avec la Démo.
Edit #1, l'application actuelle de votre requête dans la solution ci-dessus vous permettra d'utiliser quelque chose de similaire à ceci: