将表列内容横向展示

171 阅读1分钟

表结构:

姓名 课程 分数
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94

转化结果:

姓名 语文 数学 物理 平均分 总分
张三 74 83 93 83.33 250
李四 74 84 94 84.00 252

sql实现:

SELECT
	t.student AS '姓名',
	max(
		CASE
		WHEN course_name = '语文' THEN
			'分数'
		ELSE
			0
		END
	) AS '语文',
	max(
		CASE
		WHEN course_name = '数学' THEN
			'分数'
		ELSE
			0
		END
	) AS '数学',
	max(
		CASE
		WHEN course_name = '物理 ' THEN
			'分数'
		ELSE
			0
		END
	) AS '物理 ',
	cast(avg(t.score) as decimal(18,2)) AS '平均分',
	sum(t.score) AS '总分'
FROM
	course t
GROUP BY
	t.student

转载自: 简书 - 低至一折起

文章:www.jianshu.com/p/9af4e43ed…