首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从表中创建名册

从表中创建名册
EN

Stack Overflow用户
提问于 2014-10-13 22:22:05
回答 1查看 1K关注 0票数 2

我有一个原始表,其中有这样格式的原始数据:

代码语言:javascript
复制
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
 ...

我想以每周名册的形式展示

代码语言:javascript
复制
Shift      today      today+1     today+2      today+3....
Morning    Smith      Smith       Doe
Afternoon  Johnes     Johnes      Johnes
Evening   .....

我一开始就把它放到漂亮的虚拟桌子上

代码语言:javascript
复制
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

所以现在我把它很好地设置为

代码语言:javascript
复制
day      name    shift
14-10    Smith   Morning
14-10    Johnes  Afternoon
14-10    Adams   Evening
15-10    Smith   Morning

现在我被困在..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-13 23:06:45

这可以通过枢轴查询来完成。

在这里,我把你的约会划分为一周中的几天:

代码语言:javascript
复制
SELECT [name], [Monday], [Tuesday], [Wednesday], [Thursday], [Friday], [Saturday], [Sunday]
FROM (
    SELECT [name], DATENAME(dw, [day]) AS DayWeek, [shift]
    FROM table1
    ) AS src
    pivot (
        max([shift]) FOR DayWeek IN ([Monday], [Tuesday], [Wednesday], [Thursday], [Friday], [Saturday], [Sunday])
    ) AS pvt

您可以看到它在这把小提琴中工作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26349812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档