标题:[求助]sql语句行列转换--普通
只看楼主
起步者
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2006-4-10
 问题点数:0 回复次数:8 
[求助]sql语句行列转换--普通

1. 行列转换--普通

假设有张学生成绩表(CJ)如下
Name Subject Result
张三 语文 80
张三 数学 90
张三 物理 85
李四 语文 85
李四 数学 92
李四 物理 82

想变成
姓名 语文 数学 物理
张三 80 90 85
李四 85 92 82

如何实现????

下面的语句对吗????

declare @sql varchar(4000)
set @sql = 'select Name'
select @sql = @sql + ',sum(case Subject when '''+Subject+''' then Result end) ['+Subject+']'
from (select distinct Subject from CJ) as a
select @sql = @sql+' from test group by name'
exec(@sql)

搜索更多相关主题的帖子: sql 语句 行列 
2006-04-12 13:58
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
得分:0 
从卜酷塔的那个精华里贴出来的吧。。。

我没执行过(自己写过别的方式)

把test改成[CJ]试试吧

2006-04-12 14:01
起步者
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2006-4-10
得分:0 
啊大哥!! 改了也不好使呀,又没有什么更好的办法呀??谢谢~~
2006-04-12 14:14
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
得分:0 
没有问题啊,你改成什么了?

2006-04-12 14:22
起步者
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2006-4-10
得分:0 
编辑出错!!

服务器: 消息 207,级别 16,状态 3,行 1
列名 '数学' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 '英语' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 '语文' 无效。
2006-04-12 14:26
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
得分:0 
没让你发出错信息。
你改过的sql语句发上来看看,此外你的测试表格是不是完全按照你贴的那个表格做的?

2006-04-12 14:28
起步者
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2006-4-10
得分:0 
OK 拉 大哥 呵呵 !~~谢谢

再问一下 ,在标前面 加上标识列还可以实现吗?
2006-04-12 14:35
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
得分:0 
只要存在
Name Subject Result
这3个字段,这个语句都是通用的

2006-04-12 14:46
起步者
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2006-4-10
得分:0 

不好意思,我把两个单引号当作一个双引号了,没想到SQl里是不支持双引号的
谢谢了~~~

2006-04-12 15:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-57016-1-1.html




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

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