2010-08-19 10 views
4

J'ai une table qui a une colonne de type DateTime, Je souhaite pivoter sur la colonne datetime pour que les dates soient affichées en colonnes (en tant que jours de la semaine Lundi , Mardi etc).Utilisation de Pivot dans SQL Server pour Afficher les dates en tant que jours de la semaine

Ainsi, par exemple, j'ai une table comme ça (ne peut pas se rappeler comment SQL Server affiche complet datetimes mais vous voyez l'idée):

BugNo | DateOpened | TimeSpent 

1234 | 16/08/2010 | 1.0 
4321 | 16/08/2010 | 3.5 
9876 | 17/08/2010 | 1.5 
6789 | 18/08/2010 | 7.0 
6789 | 19/08/2010 | 6.5 
6789 | 20/08/2010 | 2.5 

Je voudrais pivoter sur la colonne DateOpened pour créer un jeu de résultats comme celui-ci

|TimeSpentOnBugByDay| Mon | Tue | Wed | Thu | Fri | Sat | Sun 
1234     1 
4321     3.5 
9876       1.5 
6789         7.0 
6789           6.5 
6789            2.5 

Je tiens à souligner que je ne serai en train de récupérer une semaine à la fois.

Je ne sais pas si c'est possible, même si je suis assez certain d'avoir déjà vu quelque chose comme ça (que je n'ai pas écrit).

+1

Pourquoi ne pas regarder les autres questions tagués avec "sql-server" et "pivot"? –

+0

Salut, j'ai essayé, mais je ne pouvais pas trouver cela spécifiquement, et je ne pouvais pas dériver ce dont j'avais besoin d'autres exemples. – bplus

Répondre

4

Vous pouvez le faire

SELECT BugNo, [Monday], [Tuesday], [Wednesday], [Thursday], [Friday], [Saturday], [Sunday] 
FROM (
    SELECT BugNo, DATENAME(dw, DateOpened) AS DayWeek, TimeSpent 
    FROM Bugs 
    ) AS src 
    pivot (
     SUM(TimeSpent) FOR DayWeek IN ([Monday], [Tuesday], [Wednesday], [Thursday], [Friday], [Saturday], [Sunday]) 
    ) AS pvt 
+0

Merci pour cela, c'est exactement ce que je cherchais. – bplus