转换前:
id | name | subject | score |
1 | 张三 | 语文 | 80 |
2 | 张三 | 数学 | 90 |
3 | 李四 | 数学 | 85 |
4 | 张三 | 英语 | 75 |
5 | 李四 | 语文 | 85 |
6 | 李四 | 英语 | 80 |
转换后:
姓名 | 语文 | 数学 | 英语 |
李四 | 85 | 85 | 80 |
张三 | 80 | 90 | 75 |
查询:
SELECT * FROM( SELECT name as [姓名], SUM(CASE WHEN [subject] = '语文' THEN score END) AS [语文], SUM(CASE WHEN [subject] = '数学' THEN score END) AS [数学], SUM(CASE WHEN [subject] = '英语' THEN score END) AS [英语] FROM [user] GROUP BY name
) temp
平均分(with cube):
姓名 | 语文 | 数学 | 英语 |
李四 | 85 | 85 | 80 |
张三 | 80 | 90 | 75 |
NULL | 82 | 87 | 77 |
查询:
SELECT [姓名],AVG([语文])as [语文],AVG([数学])as [数学],AVG([英语])as [英语] FROM( SELECT name as [姓名], SUM(CASE WHEN [subject] = '语文' THEN score END) AS [语文], SUM(CASE WHEN [subject] = '数学' THEN score END) AS [数学], SUM(CASE WHEN [subject] = '英语' THEN score END) AS [英语] FROM [user] GROUP BY name
) temp group by [姓名] with cube