设为首页 加入收藏

TOP

锋利的SQL-SQLServer的表旋转(行列转换)(三)
2014-11-24 02:54:41 来源: 作者: 【 】 浏览:15
Tags:锋利 SQL-SQLServer 旋转 行列 转换
句:

SELECT stu_name, exam_date,

CASEWHEN exam_sub = '语文' THENexam_score

ELSE NULL

ENDAS 语文,

CASEWHEN exam_sub = '数学' THENexam_score

ELSE NULL

ENDAS 数学,

CASEWHEN exam_sub = '英语' THENexam_score

ELSE NULL

ENDAS 英语

FROM exams;

上面语句将得到如表12-24所示的结果。

表12-24 使用CASE表达式得到的结果

stu_name

exam_date

语文

数学

英语

张三

2009-06-20

90

NULL

NULL

张三

2009-06-20

NULL

95

NULL

张三

2009-06-20

NULL

NULL

100

张三

2009-09-20

85

NULL

NULL

张三

2009-09-20

NULL

90

NULL

张三

2009-09-20

NULL

NULL

98

李四

2009-06-20

80

NULL

NULL

李四

2009-06-20

NULL

85

NULL

李四

2009-06-20

NULL

NULL

90

李四

2009-09-20

75

NULL

NULL

李四

2009-09-20

NULL

80

NULL

李四

2009-09-20

NULL

NULL

88

由上表可以看出,只要按stu_name、exam_date分组计算最大值,就可以得到表12-23所要求的计算结果。参考下面的语句:

SELECT stu_name, exam_date,

MAX(CASE WHEN exam_sub = '语文' THEN exam_score

ELSE NULL

END) AS 语文,

MAX(CASE WHEN exam_sub = '数学' THEN exam_score

ELSE NULL

END) AS 数学,

MAX(CASE WHEN exam_sub = '英语' THEN exam_score

ELSE NULL

END) AS 英语

FROM exams

GROUP BY stu_name, exam_date

ORDER BY stu_name, exam_date;

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C#同步SQLServer数据库中的数据--.. 下一篇SQL语句行列转换两种方法case .....

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·「链表」是一种怎样 (2025-12-25 19:20:51)
·C 语言中的链表有哪 (2025-12-25 19:20:48)
·c语言中的链表怎么学 (2025-12-25 19:20:45)
·Redis 分布式锁全解 (2025-12-25 17:19:51)
·SpringBoot 整合 Red (2025-12-25 17:19:48)