2010-03-30 6 views
2

comment exécuter la fonction de pivotfonction de pivot dans SQL Server 2008

i ont une table avec données

Day  Period subject fromtime totime 

---------------------------------------------- 
Monday 1st English 9:30 10:15 

Monday 1st English 9:30 10:15 

Monday 5th English 1:30 2:20 

Monday 8th English 3:40 4:30 

mais j'ai besoin le format que

day  period(1st)  2nd 3rd...... 5th...   8th 

-------------------------------------------------------------------------- 
Monday 1st   nill nill  5th    8th 
     english      english  english 

Tuesday ....... 

De cette façon.

Comment effectuer la fonction de pivot pour obtenir dans ce format.

S'il vous plaît, aidez-moi ........

j'ai utilisé ma requête

SELECT DAY, [1st],[2nd],[3rd],[4th], [5th],[6th],[7th], [8th] 
FROM 
    (
     SELECT Day, Period, Subject,FromTime,ToTime 
     FROM StaffTimeTableEntry 
    ) up 
PIVOT (Min(Subject) FOR Period IN ([1st],[2nd],[3rd],[4th], [5th],[6th],[7th], [8th])) AS pvt 
order by Day 

et le résultat vient comme

day  1st  2nd  3rd  4th 5th  6th  7th 8th 

---------------------------------------------------------------------------------- 
Friday NULL NULL NULL NULL NULL NULL English NULL 

Monday NULL NULL NULL NULL English NULL NULL NULL 

Monday NULL NULL NULL NULL NULL NULL NULL English 

Monday English NULL NULL NULL NULL NULL NULL NULL 

Saturday NULL NULL NULL NULL NULL English NULL 

Thursday NULL NULL NULL English NULL NULL NULL 

Tuesday NULL English NULL NULL NULL NULL NULL NULL 

Tuesday NULL NULL NULL NULL NULL English NULL NULL 

Wednesday NULL NULL NULL NULL NULL English NULL  

mais là aussi j'ai 3 enregistrements du lundi et pas comme un seul enregistrement du lundi ...

Comment obtenir un enregistrement pour 1 jour chacun ... ??

Répondre

2

essayez ceci:

SELECT DAY, [1st],[2nd],[3rd],[4th], [5th],[6th],[7th], [8th] 
FROM 
    (
     SELECT Day, Period, Subject --,FromTime,ToTime 
     FROM StaffTimeTableEntry 
    ) up 
PIVOT (Min(Subject) FOR Period IN ([1st],[2nd],[3rd],[4th], [5th],[6th],[7th], [8th])) AS pvt 
order by Day 

Toute colonne non « consommée » par l'opérateur PIVOT restera dans le jeu de résultats final, ce qui augmente sa cardinalité.

+0

Ya cela fonctionne pour moi .. merci beaucoup – Innova

+0

mais ici le jour vient dans ce format vendredi lundi samedi jeudi mardi mercredi mais j'ai besoin Jours pour .. – Innova

+0

'commande par jour jour où 'Lundi' puis 1 quand 'Mardi' puis 2 'etc Ou trouver un moyen de convertir votre jour à jour, puis commandez par là. –