| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 956 人关注过本帖, 2 人收藏
标题:请教行列转换的问题
只看楼主 加入收藏
duanchangren
Rank: 1
等 级:新手上路
威 望:1
帖 子:252
专家分:0
注 册:2008-7-26
结帖率:83.33%
收藏(2)
 问题点数:0 回复次数:15 
请教行列转换的问题
create table tb(姓名 varchar(10) , 课程 varchar(10) , 分数 int)
insert into tb values('张三' , '语文' , 74)
insert into tb values('张三' , '数学' , 83)
insert into tb values('张三' , '物理' , 93)
insert into tb values('李四' , '语文' , 74)
insert into tb values('李四' , '数学' , 84)
insert into tb values('李四' , '物理' , 94)
go


select * from (select * from tb) a pivot (max(分数) for 课程 in (语文,数学,物理)) b



里面的pivot 怎么用啊
搜索更多相关主题的帖子: 行列转换 
2008-09-11 14:14
师妃暄
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:805
专家分:107
注 册:2006-3-1
收藏
得分:0 
pivot运算符包含下面三个逻辑阶段
1.隐式分组
2.隔离值
3.应用聚合函数

对这句而言select * from (select * from tb) a pivot (max(分数) for 课程 in (语文,数学,物理)) b

pviot将 a 表作为它的左输入参数. pviot右边的直接应用了参数的两个字段(分数和课程),那么pviot就会把没有直接引用的姓名字段作为group by的参数

这句话实际等同于这样:

select 姓名,max(case when 课程='语文' then 分数  end) as 语文,
            max(case when 课程='数学' then 分数  end) as 数学,
            max(case when 课程='物理' then 分数     end) as 物理
from (select * from tb) as D
group by  姓名

有实力才会有魅力 实力来自坚持不懈的努力
2008-09-11 16:35
师妃暄
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:805
专家分:107
注 册:2006-3-1
收藏
得分:0 
至于为什么要试用max和group by进行分组

可以这样解释下.

如果我们这样写:
select 姓名,case when 课程='语文' then 分数  end as 语文,
            case when 课程='数学' then 分数  end as 数学,
            case when 课程='物理' then 分数     end as 物理
from (select * from tb) as D
得到的结果是这样的:
图片附件: 游客没有浏览图片的权限,请 登录注册


很明显....需要用到max和group by才能得到想要的结果

有实力才会有魅力 实力来自坚持不懈的努力
2008-09-11 16:48
小仙
Rank: 7Rank: 7Rank: 7
来 自:光之谷
等 级:贵宾
威 望:39
帖 子:1812
专家分:1
注 册:2008-8-8
收藏
得分:0 
呃。。眼睛看花了。。pivot 没见到过。俺的数据库学的。。。此帖子还是没能领略到精妙所在。
2008-09-13 12:17
C心情
Rank: 2
等 级:论坛游民
帖 子:90
专家分:74
注 册:2008-1-19
收藏
得分:0 
经典,数据库真的很奇妙!
2008-09-13 20:35
duanchangren
Rank: 1
等 级:新手上路
威 望:1
帖 子:252
专家分:0
注 册:2008-7-26
收藏
得分:0 
果然有实力
小弟佩~服
2008-09-23 08:40
heavyrain500
Rank: 1
来 自:长春
等 级:新手上路
帖 子:44
专家分:5
注 册:2008-8-27
收藏
得分:0 
高手就是高手
我的数据库学的......
哎!~~
愣是没看懂你说的是什么意思!~~

再牛B的肖邦,也弹不出老子的悲伤~!.'
2008-09-24 16:53
徐强
Rank: 2
等 级:新手上路
威 望:3
帖 子:72
专家分:0
注 册:2007-3-30
收藏
得分:0 
2005的新用法
2008-09-24 17:32
duanchangren
Rank: 1
等 级:新手上路
威 望:1
帖 子:252
专家分:0
注 册:2008-7-26
收藏
得分:0 
其实我也还没懂呗
用那方法
老提示 from 附近有语法错误
还得请高手现场指点一下
2008-09-25 07:54
Wikor
Rank: 1
等 级:新手上路
威 望:1
帖 子:124
专家分:0
注 册:2008-3-12
收藏
得分:0 
学习了,,看来我的数据库学的。。。

斑竹就是斑竹。。pivot要去研究下咯
2008-09-25 12:06
快速回复:请教行列转换的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017048 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved