Sql分组查询学生平均成绩和行专列列转行

--创建一个学生表
create table Stu
(
    ID int primary key identity,
	Name varchar(50),
	Course varchar(50),
	Score int
)



--分组查询平均成绩
select Name 姓名,Course 科目,Avg(Score) 平均成绩 from Stu Group By Name,Course

Sql分组查询学生平均成绩和行专列列转行_第1张图片

--行专列查询平均成绩
select Name 姓名,Avg(语文) as 语文,avg(数学) as 数学, avg(物理) as 物理 from Stu
pivot (avg(Score) for Course in (语文,数学,物理)) as T group by Name

Sql分组查询学生平均成绩和行专列列转行_第2张图片

--创建一个视图
alter view V_Stu
as
select Name 姓名,Avg(语文) as 语文,avg(数学) as 数学, avg(物理) as 物理 from Stu
pivot (avg(Score) for Course in (语文,数学,物理)) as T group by Name


--列转行
select * from V_Stu unpivot (Score for Course in (语文,数学,物理)) as T

Sql分组查询学生平均成绩和行专列列转行_第3张图片

你可能感兴趣的:(Sql,Sql,分组查询,行专列)