J'ai une requête qui renvoie une ligne. Toutefois, je souhaite inverser les lignes et les colonnes, ce qui signifie que les lignes sont affichées en tant que colonnes et colonnes en tant que lignes. Je pense que la meilleure façon de le faire est d'utiliser un tableau croisé dynamique, que je ne suis pas expert enComment inverser des lignes et des colonnes à l'aide d'un tableau croisé dynamique T-SQL
Voici ma requête simple:.
SELECT Period1, Period2, Period3
FROM GL.Actuals
WHERE Year = 2009 AND Account = '001-4000-50031'
résultats (en-têtes):
Période1, Period2, PERIOD3
612,58, 681,36, 676,42
I aimerait que les résultats pour ressembler à ceci:
résultats souhaités:
Période, Montant
Jan, 612,58
fév 681,36
Mar, 676,42
Ceci est un exemple simple, mais ce que je ' m vraiment après est un peu plus complexe que cela. Je réalise que je pourrais produire ces résultats en utilisant plusieurs commandes SELECT à la place. J'espère juste que quelqu'un peut faire la lumière sur la façon d'accomplir cela avec un tableau croisé dynamique ou s'il y a encore un meilleur moyen.
Ceci est une excellente solution pour l'exemple simple que j'ai donné.Cependant, si j'ai besoin d'inclure une autre colonne, je ne vois pas comment je peux le faire de cette façon. Voir l'exemple ci-dessous. Je fais le JOIN pour l'autre colonne, mais je ne peux pas l'obtenir. SELECT compte, période, [2010 Actual] DE ( \t SELECT a.Account \t, a.Period1 AS Jan, a.Period2 AS fév a.Period3 AS Mar \t, a1.Period1 AS Jan1, a1 .Period2 AS Feb1, a1.Period3 AS Mar1 \t dE GL.Actuals un \t LEFT JOIN GL.Actuals a1 SUR a1.Account = a.Account ET a1.Year = a.Year - 1 \t OÙ a.Year = 2010) AS d UNPIVOT ([2010 Actual] POUR Période IN (Jan, Fév, Mar)) AS –
Intéressant, mais pas exactement ce que je suis après. Dans ce cas, j'ai besoin de deux colonnes, une pour chaque année. –
dans ce cas, après l'unpivot, appliquez un pivot comme ceci: SELECT Compte, Période, [2009], [2010] FROM (...) AS PIVOT DP (MAX (Montant) POUR [Année] IN ([2009] , [2010])) AS P, où ... est le dernier unpivot d'en haut. J'espère que cela pourra aider :) – Adam