22,209
社区成员
发帖
与我相关
我的任务
分享
declare @t
table(id int
,name nvarchar(10)
,week_1 nvarchar(10),week_2 nvarchar(10),week_3 nvarchar(10),week_4 nvarchar(10),week_5 nvarchar(10),week_6 nvarchar(10),week_7 nvarchar(10)
)
insert @t select 1,'制度一','规则一','规则一','规则一','规则一','规则一','规则二','规则三'
insert @t select 2,'制度二','规则一','规则一','规则一','规则一','规则一','规则一','规则二'
select id,name,[type]
,[week]=datename(weekday,dateadd(d,right([week],1)-1,'1900-01-01'))
from @t
unpivot([type] for [week] in([week_1],[week_2],[week_3],[week_4],[week_5],[week_6],[week_7]))t
/*
id name type week
1 制度一 规则一 星期一
1 制度一 规则一 星期二
1 制度一 规则一 星期三
1 制度一 规则一 星期四
1 制度一 规则一 星期五
1 制度一 规则二 星期六
1 制度一 规则三 星期日
2 制度二 规则一 星期一
2 制度二 规则一 星期二
2 制度二 规则一 星期三
2 制度二 规则一 星期四
2 制度二 规则一 星期五
2 制度二 规则一 星期六
2 制度二 规则二 星期日
*/
if object_id('tmp_t')is not null drop table tmp_t
create table tmp_t
(id int
,name nvarchar(10)
,week_1 nvarchar(10),week_2 nvarchar(10),week_3 nvarchar(10),week_4 nvarchar(10),week_5 nvarchar(10),week_6 nvarchar(10),week_7 nvarchar(10)
)
insert tmp_t select 1,'制度一','规则一','规则一','规则一','规则一','规则一','规则二','规则三'
insert tmp_t select 2,'制度二','规则一','规则一','规则一','规则一','规则一','规则一','规则二'
go
if object_id('v_t')is not null drop view v_t
go
create view v_t as
select id,name,[type]
,[week]=datename(weekday,dateadd(d,right([week],1)-1,'1900-01-01'))
from tmp_t
unpivot([type] for [week] in([week_1],[week_2],[week_3],[week_4],[week_5],[week_6],[week_7]))t
go
select * from v_t
/*
id name type week
1 制度一 规则一 星期一
1 制度一 规则一 星期二
1 制度一 规则一 星期三
1 制度一 规则一 星期四
1 制度一 规则一 星期五
1 制度一 规则二 星期六
1 制度一 规则三 星期日
2 制度二 规则一 星期一
2 制度二 规则一 星期二
2 制度二 规则一 星期三
2 制度二 规则一 星期四
2 制度二 规则一 星期五
2 制度二 规则一 星期六
2 制度二 规则二 星期日
*/