【发布时间】:2014-12-08 14:20:49
【问题描述】:
我有原始表格,其中包含这种格式的原始数据:
gkey Start_date Finish_date Start_Hr Finish_hr Name
1 2014-01-01 2014-10-16 07 15 Smith
2 2014-01-01 2014-12-31 15 21 Johnes
3 2014-01-01 2014-12-31 21 07 Adams
4 2014-10-16 2014-12-31 21 07 Doe
...
我想以格式显示为每周花名册
Shift today today+1 today+2 today+3....
Morning Smith Smith Doe
Afternoon Johnes Johnes Johnes
Evening .....
我已经开始将它放入漂亮的虚拟表中
declare @d datetime
declare @c integer
declare @T table (
[day] datetime,
name varchar(max),
shift varchar(max)
)
set @c=1
set @d= getdate();
while @c<=7
begin
insert into @T
select @d as [day],
name,
case when finish_hr <=6 then 'Morning' when finish_hr<=15 then 'Afternoon' when finish_hr<=23 then 'Evening' end as shift
from calling_roster where start_date <=@d and finish_date >@d
set @c= @c+1
set @d = dateadd(day,1,@d)
end
所以现在我已经很好地设置了
day name shift
14-10 Smith Morning
14-10 Johnes Afternoon
14-10 Adams Evening
15-10 Smith Morning
现在我被困住了......
【问题讨论】:
-
谷歌“sql server pivot”
标签: sql tsql sql-server-2005