2
我想使用sql server pivot生成每周时间表。如何使用数据透视表来生成每周TimeTable
我的db有这些表。
create table Students
(
StudentID int identity primary key,
Name nvarchar(50)
)
create table Times
(
TimeID int identity primary key
,Name nvarchar(10)
)
create table Days
(
DayID int identity primary key
,Name nvarchar(20)
)
create table TimeTable
(
StudentID int references Students(StudentID)
,TimeID int references Times(TimeID)
,DayID int references Days(DayID)
,Value nvarchar(50)
)
insert Times values('t1')
insert Times values('t2')
insert Times values('t3')
insert Days values('sunday')
insert Days values('monday')
insert Days values('tuesday')
insert Days values('wednesday')
insert Days values('thursday')
insert Days values('friday')
insert Days values('saturday')
我想有柱(大卫·,DAYNAME,T1,T2,T3)
我使用这个查询,但因为使用MAX(值)聚集功能,当我记录插入时间表表此查询显示列T1,T2和t3.however T2和T3一个值应为空
SELECT *
FROM (SELECT dbo.Days.DayID, dbo.Days.Name, dbo.Times.Name AS Expr1, dbo.TimeTable.Value
FROM dbo.Times CROSS JOIN
dbo.Days LEFT OUTER JOIN
dbo.TimeTable ON dbo.Days.DayID = dbo.TimeTable.DayID) AS d_1
PIVOT (max (Value) FOR [Expr1]
IN (t1, t2, t3)) AS P
例如执行这些CMDS后,ASP值显示所有列。
insert Students values('ahmad')
insert TimeTable values(1,1,1,'asp')
非常感谢您的回答bluefeet。 – user1329379 2012-04-12 16:15:43
欢迎您,如果答案有帮助,那么请确保您通过左侧的复选标记将其标记为答案。 – Taryn 2012-04-12 16:22:01