declare @s varchar(8000) set @s='' select @s=@s+',['+rtrim(科目)+']=max(case 科目 when '''+rtrim(科目)+''' then 教师 else '''' end)' from 表 group by 科目 exec('select 班级'+@s+' from 表 group by 班级')
--测试--测试数据 create table 表(班级 varchar(10),教师 varchar(10),科目 varchar(10)) insert 表 select '初一(1)','张三','数学' union all select '初一(1)','张六','英语' union all select '初一(1)','王五','社会' union all select '初一(1)','李四','科学' union all select '初三(1)','小三','数学' union all select '初三(1)','张开','英语' union all select '初三(1)','李方','社会' union all select '初三(1)','小黄','电脑' go--查询 declare @s varchar(8000) set @s='' select @s=@s+',['+rtrim(科目)+']=max(case 科目 when '''+rtrim(科目)+''' then 教师 else '''' end)' from 表 group by 科目 exec('select 班级'+@s+' from 表 group by 班级') go--删除测试 drop table 表/*--测试结果班级 电脑 科学 社会 数学 英语 ---------- ---------- ---------- ---------- ---------- ---------- 初三(1) 小黄 李方 小三 张开 初一(1) 李四 王五 张三 张六 --*/
create table 表(班级 varchar(10),教师 varchar(10),科目 varchar(10))
insert 表 select '初一(1)','张三','数学'
union all select '初一(1)','张六','英语'
union all select '初一(1)','王五','社会'
union all select '初一(1)','李四','科学'
union all select '初三(1)','小三','数学'
union all select '初三(1)','张开','英语'
union all select '初三(1)','李方','社会'
union all select '初三(1)','小黄','电脑'
go--查询
declare @s varchar(8000)
set @s=''
select @s=@s+',['+rtrim(科目)+']=max(case 科目 when '''+rtrim(科目)+''' then 教师 else '''' end)'
from 表 group by 科目
exec('select 班级'+@s+' from 表 group by 班级')
go--删除测试
drop table 表/*--测试结果班级 电脑 科学 社会 数学 英语
---------- ---------- ---------- ---------- ---------- ----------
初三(1) 小黄 李方 小三 张开
初一(1) 李四 王五 张三 张六
--*/