使用 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM