列转行--行转列问题(2)
来源:未知 责任编辑:责任编辑 发表时间:2014-03-23 22:32 点击:次
MAX(CASE WHEN Subject='数学' THEN Score ELSE 0 END) AS "数学",
MAX(CASE WHEN Subject='英语' THEN Score ELSE 0 END) AS "英语",
MAX(CASE WHEN Subject='生物' THEN Score ELSE 0 END) AS "生物"
FROM StudentScores
GROUP BY UserName;
讨论:
实现上述需求的关键在于,多个case when与group by的配合使用;下面我们来
分析下sql的执行过程:
我们手下看下select子句,可以确定要查询的结果集中有5列,username、语文、数学、英 www.2cto.com
语、生物;拿出表中第一条记录多数据处理得出的结果集:
Username 语文 数学 英语 生物
Nick 80 0 0 0
80是由CASE WHEN Subject='语文' THEN Score ELSE 0 END得出,其他的0分别是由CASE WHEN
Subject='数学' THEN Score ELSE 0 END、CASE WHEN Subject='英语' THEN Score ELSE 0 END、
CASE WHEN Subject='生物' THEN Score ELSE 0 END得出,一次类推,得到的结果集为
Username 语文 数学 英语 生物
Nick 80 0 0 0
Nike 0 90 0 0
Nike 0 0 70 0
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>