开发者社区> 小麋鹿666> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

SQL2000 和 SQL2005下行列转换示例

简介:
+关注继续查看
SQL2000 和 SQL2005下行列转换示例 
 

/*
--创建 学生成绩表
 
CREATE TABLE [StuSources] (
 [StuID] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
 [StuName] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
 [KeCheng] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
 [ChengJi] [float] NOT NULL
) ON [PRIMARY]
 
*/
 

/*
--填充 部分数据
 
INSERT INTO StuSources
SELECT '001','张三','语文',81
UNION SELECT  '001','张三','数学',71
UNION SELECT  '001','张三','历史',71
UNION SELECT  '002','李四','语文',82
UNION SELECT  '002','李四','数学',72
UNION SELECT  '002','李四','历史',72
 
*/
 
/*
-- 一般的直接查询
 
SELECT * FROM StuSources
 
-- 结果
StuID  StuName  KeCheng  ChengJi
001        张三       历史       71.0
001        张三       数学       71.0
001        张三       语文       81.0
002        李四       历史       72.0
002        李四       数学       72.0
002        李四       语文       82.0
 
*/
 
/*
-- Sql 2000 下 行列转换
 
SELECT StuName,
'语文' = Sum(Case KeCheng WHEN '语文' THEN ChengJi ELSE 0 END ) ,
'数学' = Sum(Case KeCheng WHEN '数学' THEN ChengJi ELSE 0 END ),
'历史' = Sum(Case KeCheng WHEN '历史' THEN ChengJi ELSE 0 END )
FROM StuSources
GROUP BY StuName
 
-- 结果
StuName  语文 数学 历史
李四       82.0 72.0 72.0
张三       81.0 71.0 71.0
 
*/
 
/*
-- Sql 2005 下 PIVOT 
 
SELECT StuName,[语文] AS '语文',
[数学] AS '数学',[历史] AS '历史'
FROM StuSources s
PIVOT (SUM (ChengJi) FOR KeCheng IN ([语文],[数学],[历史]) )AS pvt
 
*/
 
 
 
 
版权说明

  如果标题未标有<转载、转>等字则属于作者原创,欢迎转载,其版权归作者和博客园共有。
  作      者:温景良
  文章出处:http://wenjl520.cnblogs.com/  或  http://www.cnblogs.com/

posted @ 2009-04-28 23:52 温景良(Jason) Views(122) Comments(1) Edit 收藏

  
#1楼15173162009/5/2 13:48:15 2009-05-02 13:48 | Steven Xiao  
不错的文章,thanks,收藏
http://pic.cnblogs.com/face/u21159.png

公告

SQL2000 和 SQL2005下行列转换示例 
 

/*
--创建 学生成绩表
 
CREATE TABLE [StuSources] (
 [StuID] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
 [StuName] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
 [KeCheng] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
 [ChengJi] [float] NOT NULL
) ON [PRIMARY]
 
*/
 

/*
--填充 部分数据
 
INSERT INTO StuSources
SELECT '001','张三','语文',81
UNION SELECT  '001','张三','数学',71
UNION SELECT  '001','张三','历史',71
UNION SELECT  '002','李四','语文',82
UNION SELECT  '002','李四','数学',72
UNION SELECT  '002','李四','历史',72
 
*/
 
/*
-- 一般的直接查询
 
SELECT * FROM StuSources
 
-- 结果
StuID  StuName  KeCheng  ChengJi
001        张三       历史       71.0
001        张三       数学       71.0
001        张三       语文       81.0
002        李四       历史       72.0
002        李四       数学       72.0
002        李四       语文       82.0
 
*/
 
/*
-- Sql 2000 下 行列转换
 
SELECT StuName,
'语文' = Sum(Case KeCheng WHEN '语文' THEN ChengJi ELSE 0 END ) ,
'数学' = Sum(Case KeCheng WHEN '数学' THEN ChengJi ELSE 0 END ),
'历史' = Sum(Case KeCheng WHEN '历史' THEN ChengJi ELSE 0 END )
FROM StuSources
GROUP BY StuName
 
-- 结果
StuName  语文 数学 历史
李四       82.0 72.0 72.0
张三       81.0 71.0 71.0
 
*/
 
/*
-- Sql 2005 下 PIVOT 
 
SELECT StuName,[语文] AS '语文',
[数学] AS '数学',[历史] AS '历史'
FROM StuSources s
PIVOT (SUM (ChengJi) FOR KeCheng IN ([语文],[数学],[历史]) )AS pvt
 
*/
 
 
 
 
版权说明

  如果标题未标有<转载、转>等字则属于作者原创,欢迎转载,其版权归作者和博客园共有。
  作      者:温景良
  文章出处:http://wenjl520.cnblogs.com/  或  http://www.cnblogs.com/

posted @ 2009-04-28 23:52 温景良(Jason) Views(122) Comments(1) Edit 收藏

  
#1楼15173162009/5/2 13:48:15 2009-05-02 13:48 | Steven Xiao  
不错的文章,thanks,收藏
http://pic.cnblogs.com/face/u21159.png

公告

SQL2000 和 SQL2005下行列转换示例 
 

/*
--创建 学生成绩表
 
CREATE TABLE [StuSources] (
 [StuID] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
 [StuName] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
 [KeCheng] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
 [ChengJi] [float] NOT NULL
) ON [PRIMARY]
 
*/
 

/*
--填充 部分数据
 
INSERT INTO StuSources
SELECT '001','张三','语文',81
UNION SELECT  '001','张三','数学',71
UNION SELECT  '001','张三','历史',71
UNION SELECT  '002','李四','语文',82
UNION SELECT  '002','李四','数学',72
UNION SELECT  '002','李四','历史',72
 
*/
 
/*
-- 一般的直接查询
 
SELECT * FROM StuSources
 
-- 结果
StuID  StuName  KeCheng  ChengJi
001        张三       历史       71.0
001        张三       数学       71.0
001        张三       语文       81.0
002        李四       历史       72.0
002        李四       数学       72.0
002        李四       语文       82.0
 
*/
 
/*
-- Sql 2000 下 行列转换
 
SELECT StuName,
'语文' = Sum(Case KeCheng WHEN '语文' THEN ChengJi ELSE 0 END ) ,
'数学' = Sum(Case KeCheng WHEN '数学' THEN ChengJi ELSE 0 END ),
'历史' = Sum(Case KeCheng WHEN '历史' THEN ChengJi ELSE 0 END )
FROM StuSources
GROUP BY StuName
 
-- 结果
StuName  语文 数学 历史
李四       82.0 72.0 72.0
张三       81.0 71.0 71.0
 
*/
 
/*
-- Sql 2005 下 PIVOT 
 
SELECT StuName,[语文] AS '语文',
[数学] AS '数学',[历史] AS '历史'
FROM StuSources s
PIVOT (SUM (ChengJi) FOR KeCheng IN ([语文],[数学],[历史]) )AS pvt
 
*/
 
 
 
 
版权说明

  如果标题未标有<转载、转>等字则属于作者原创,欢迎转载,其版权归作者和博客园共有。
  作      者:温景良
  文章出处:http://wenjl520.cnblogs.com/  或  http://www.cnblogs.com/

posted @ 2009-04-28 23:52 温景良(Jason) Views(122) Comments(1) Edit 收藏

  
#1楼15173162009/5/2 13:48:15 2009-05-02 13:48 | Steven Xiao  
不错的文章,thanks,收藏
http://pic.cnblogs.com/face/u21159.png

公告

本文转自我的程序人生博客园博客,原文链接:http://www.cnblogs.com/wenjl520/archive/2009/04/28/1445782.html,如需转载请自行联系原作者

 
 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SQL之行列转换
Hive 查询语句之行列转换
0 0
关于MYSQL的行列转换
同事今天中午去参加一个面试,有一道面试题比较基础 把 a        b        c 1        1        1.1 1        2        1.2 1        3        1.3 2        1        2.1 2        2        2.2 2        3        2.3 变成
805 0
Sql语句之select 5种查询
select 5种子句:注意顺序where / group by /having / order by / limit / 清空表中的数据:truncate 表名; 导入表结构(不含数据): create table 表2 like 表1; 删除表:drop table 表名; ...
640 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
SQL Server 2017
立即下载
MaxCompute SQL介绍
立即下载
SQL Sever迁移PG经验
立即下载