MSSQL 行转列问题

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 07:28 点击:

 

测试数据:

 

 

 

create table StudentScore 

 Name varchar(12) NULL, 

 ClassName varchar(12) NULL, 

 Grade int NULL 

INSERT INTO StudentScore(Name,ClassName,Grade) 

VALUES 

('张三','语文','78'),('张三','数学','79'),('张三','英语','80'), 

('张三','物理','81'),('张三','政治','82'), 

 ('李四','语文','84'),('李四','数学','85'),('李四','英语','86'), 

('李四','物理','83'),('李四','政治','87'), 

('王五','语文','89'),('王五','数学','82'),('王五','英语','90'), 

('王五','物理','81'),('王五','政治','91')  

 

创建完测试数据后,SELECT后的结果如图:

\

要求写一条SQL查询语句,查询结果如下列显示

姓名 语文 数学 英语 物理 政治
张三 78 79 80 81 82
李四 83 84 85 86 87
王五 88 89 90 91 92

 

1 利用CASE WHEN关键字

 

 

SELECT Name,MAX(CASE ClassName WHEN '语文' THEN Grade ELSE 0 END)语文, 

MAX(CASE ClassName WHEN '数学' THEN Grade ELSE 0 END)数学, 

MAX(CASE ClassName WHEN '英语' THEN Grade ELSE 0 END)英语, 

MAX(CASE ClassName WHEN '物理' THEN Grade ELSE 0 END)物理, 

MAX(CASE ClassName WHEN '政治' THEN Grade ELSE 0 END)政治  

 FROM

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • sql常见面试题
      • SQL SERVER 2005性能之跟踪
      • SQL编程(一)
      • LINUX上RMAN自动备份脚本
      • sql server面试题
      • 如何将多个SQL查询统计结果一次显示出来
      • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
      • sql server 列转行
      • SQL小技巧系列 --- 行转列合并
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1