使用 group by 和 case when

declare @t as table
(
 FName   varchar(10),
 FCourse varchar(10),
 FScore  decimal(4,1)
)

insert into @t(FName,FCourse,FScore)
values
('3-张三','语文',95),
('3-张三','数学',80),
('3-张三','英语',70),

('4-李四','语文',88),
('4-李四','数学',87),
('4-李四','英语',86),

('5-王五','语文',90),
('5-王五','数学',80),
('5-王五','英语',70)
基础数据
select * from @t

 

select 
 FName ,
 max(case FCourse when '语文' then FScore else 0 end) as '语文',
 max(case FCourse when '数学' then FScore else 0 end) as '数学',
 max(case FCourse when '英语' then FScore else 0 end) as '英语'
from @t
group by FName

 

select 
 FName,
 case 
  when FCourse='数学' then '理科' 
  else '文科' 
 end as '科别',
 sum(FScore) as '总分'
from @t
group by FName,case when FCourse='数学' then '理科' else '文科' end 
order by FName

 

select 
 FName,
 FType as '科别',
 sum(FScore) as '总分' 
from (
 select 
  FName, FCourse, FScore,
  FType = case when FCourse in ('语文','英语') then '文科' else '理科' end 
 from @t
) as a
group by FName,FType
order by FName

 

posted @ 2020-04-13 23:51  茗::流  阅读(6688)  评论(0)    收藏  举报
如有雷同,纯属参考。如有侵犯你的版权,请联系我。