22,209
社区成员
发帖
与我相关
我的任务
分享
Create table Class([Student] nvarchar(2),[Course] nvarchar(2),[Score] int)
Insert Class
select N'张三',N'语文',78 union all
select N'张三',N'数学',87 union all
select N'张三',N'英语',82 union all
select N'张三',N'物理',90 union all
select N'李四',N'语文',65 union all
select N'李四',N'数学',77 union all
select N'李四',N'英语',65 union all
select N'李四',N'物理',85
Go
--2000方法:
动态:
declare @s nvarchar(4000)
set @s=''
Select @s=@s+','+quotename([Course])+'=max(case when [Course]='+quotename([Course],'''')+' then [Score] else 0 end)'
from Class group by[Course]
exec('select [Student]'+@s+' from Class group by [Student]')
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 行受影响)
*/
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','星期二','数学'
select convert(varchar(8),时间,108) as 时间,
max(case 日期 when '星期一' then 课程 end) 星期一,
max(case 日期 when '星期二' then 课程 end) 星期二,
max(case 日期 when '星期三' then 课程 end) 星期三,
max(case 日期 when '星期四' then 课程 end) 星期四,
max(case 日期 when '星期五' then 课程 end) 星期五,
max(case 日期 when '星期六' then 课程 end) 星期六,
max(case 日期 when '星期日' then 课程 end) 星期日
from kb
group by 时间
drop table kb
/*
时间 星期一 星期二 星期三 星期四 星期五 星期六 星期日
---- ---------- ---------- ---------- ---------- ---------- ---------- ----------
9:00:00 数学 NULL NULL NULL NULL NULL NULL
14:00:00 NULL 数学 NULL NULL NULL NULL NULL
19:00:00 NULL 英语 NULL NULL NULL NULL NULL
(3 行受影响)
*/