SQL 行转列的运用

适用场景:需要将行数据转换成列数据

例子:

现在有一个学生的成绩表

 

但是我们需要将每个学生的成绩汇集到一条数据上,这时候就可以用到行转列。

代码如下

一、不使用  PIVOT

1 SELECT  
2         MAX('学生'+CONVERT(NCHAR(10),[Stu_ID])) AS 学生
3        ,MAX(CASE WHEN Course='语文' THEN ISNULL(Score,0) ELSE 0 END) AS 语文成绩
4        ,MAX(CASE WHEN Course='数学' THEN ISNULL(Score,0) ELSE 0 END) AS 数学成绩
5        ,MAX(CASE WHEN Course='英语' THEN ISNULL(Score,0) ELSE 0 END) AS 英语成绩
6        ,CONVERT(DECIMAL(4,1),ROUND(AVG(Score),1))  AS 平均成绩
7   FROM [EFDemo].[dbo].[Table_1] 
8   GROUP BY Stu_ID

二、使用 PIVOT

   SELECT * FROM [EFDemo].[dbo].[Table_1]  AS P PIVOT(MAX(P.Score) FOR P.Course IN ([语文],[数学],[英语]) AS T

 

转换后查询到的结果集

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章