SQL SERVER行列转换

2017-08-24  本文已影响0人  JavaIsMyLife

行列转换
要用到SQL SERVER
CASE [字段名] WHEN ‘字段名’ THEN [字段的数据值] ELSE 0 END
CASE WHEN [字段名] = ‘字段名’ THEN [字段的数据值] ELSE 0 END
判断一个字段名是否和这个改字段名相等,如果相等,就得到字段的数据值,否则为0.

Student

uid (key) name age
1 张三 22
2 李四 22
3 王五 19

score

sid (key) sname score uid
1 数学 111 1
2 英语 122 1
3 语文 119 1
4 数学 121 2
5 英语 122 2
6 语文 123 2
7 数学 131 3
8 英语 142 3
9 语文 139 3

输出表格式

uid age name 数学 英语 语文
SELECT  s3.uid,s3.age,s3.name,
SUM(CASE s3.sname WHEN '英语' THEN scores ELSE 0 END) AS '数学',
SUM(CASE s3.sname WHEN '数学' THEN scores ELSE 0 END)     AS '英语',
SUM(CASE s3.sname WHEN '语文' THEN scores ELSE 0 END) AS '语文'   
FROM (select s1.uid,s1.name,s1.age,sname,scores,sid from 
dbo.student as s1,dbo.score as s2 where s1.uid = s2.uid) as s3
GROUP BY  s3.uid,s3.age,s3.name;
上一篇下一篇

猜你喜欢

热点阅读