2010-07-28 22 views
3

J'ai une table d'une ligne renvoyée d'une requête qui ressemble à ceciPivot T-SQL colonne d'une ligne

[Date1] [Date2] [Date3] [Date4] [Date5] [Date6] 

et je veux toutes les dates de pile comme ça

[Date1] 
[Date2] 
[Date3] 
[Date4] 
[Date5] 
[Date6] 

Comment pourrais-je procéder sans une série de requêtes séparées et de déclarations syndicales? J'ai essayé de jouer avec la fonction PIVOT mais je suis confus car il n'y a rien pour agréger la ligne.

Répondre

4

Essayez d'utiliser UNPIVOT, comme ceci:

SELECT Dates 
FROM 
    (SELECT * from yourtable) p 
UNPIVOT 
    (Dates FOR Seq IN 
     ([Date1], [Date2], [Date3], [Date4], [Date5], [Date6]) 
) AS unpvt 
+0

Cela fonctionne très bien merci. Quel est le mot clé Seq? – Pieces

+0

@Pieces, Seq n'est pas un mot-clé, c'est un alias de colonne. Si vous modifiez les dates SELECT ... pour être SELECT Seq, Dates ... vous verrez les noms de colonnes non-pivotés comme valeurs dans la colonne Seq. (Je l'ai utilisé comme une abréviation de "Séquence".) –