2010-03-30 77 views
2

如何进行旋转功能旋转功能2008

我有DATAS

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 

一个表,但我需要的格式

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

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

Tuesday ....... 

这样。

如何执行pivot函数以获得此格式。

请帮我........

我用我的查询

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 

,结果出来的

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  

但这里也有我3日星期一的记录,而不是作为一个单一的星期一记录...

如何获得一个记录每一天...?

回答

2

试试这个:

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 

没有“消费”由PIVOT操作者将保持在最终结果集,增加了其基数的任何列。

+0

雅它的作品了,我..感谢了很多 – Innova 2010-03-30 06:07:09

+0

但这里有一天,这种格式 周五 周一 周六 周四 周二周三 但我需要天才能.. – Innova 2010-03-30 06:42:41

+0

'秩序在'星期一'的情况下,然后是'星期二',然后是2',等等。或者找到一些方法将您的日期转换为日期,然后按顺序排列。 – 2010-03-30 06:48:43