create
table
kb(姓名 nvarchar(10),上课时间
varchar
(8),日期 nvarchar(8),课程 nvarchar(10))
insert
into
kb
select
'张三'
,
'9:00:00'
,
'星期一'
,
'数学'
insert
into
kb
select
'张三'
,
'14:00:00'
,
'星期二'
,
'英语'
insert
into
kb
select
'张三'
,
'19:00:00'
,
'星期二'
,
'数学'
go
;
with
cte
as
(
select
(
case
when
datepart(hh,上课时间)<12
then
'上午'
when
datepart(hh,上课时间)>18
then
'晚上'
else
'下午'
end
)
as
时间,日期,课程
from
kb
)
select
*
from
cte pivot (
max
([课程])
for
[日期]
in
([星期一],[星期二],[星期三],[星期四],[星期五],[星期六],[星期日]))b
go
drop
table
kb
/*
时间 星期一 星期二 星期三 星期四 星期五 星期六 星期日
---- ---------- ---------- ---------- ---------- ---------- ---------- ----------
上午 数学
NULL
NULL
NULL
NULL
NULL
NULL
晚上
NULL
数学
NULL
NULL
NULL
NULL
NULL
下午
NULL
英语
NULL
NULL
NULL
NULL
NULL
(3 行受影响)
*/