34,590
社区成员
发帖
与我相关
我的任务
分享
declare @s nvarchar(4000)
set @s=''
Select @s=@s+','+ quotename(课程,'''')+'=sum(case 课程 when '+quotename(课程,'''')+' then 分数 else 0 end)'
from tb group by 课程
--print @s
exec('select [姓名]'+@s+' from tb group by [姓名]')
姓名 数学 物理 语文
李四 84 94 74
张三 83 93 74
---动态
declare @s nvarchar(4000)
set @s=''
Select @s=@s+','+ quotename(课程+'分数')+'=sum(case 课程 when '+quotename(课程,'''')+' then 分数 else 0 end)'
from tb group by 课程
--print @s
exec('select [姓名]'+@s+' from tb group by [姓名]')
姓名 数学分数 物理分数 语文分数
李四 84 94 74
张三 83 93 74
select
姓名,
语文=max(case when 课程='语文' then 分数 else 0 end),
数学=max(case when 课程='数学' then 分数 else 0 end),
物理=max(case when 课程='物理' then 分数 else 0 end)
from tb
group by 姓名
select 姓名 , sum(case 课程 when '语文' then 分数 else 0 end) 语文,
sum(case 课程 when '数学' then 分数 else 0 end) 数学,
sum(case 课程 when '物理' then 分数 else 0 end) 物理
from tb
group by 姓名