写sql,怎么将查询结果的行列转换呀?

 我来答
unitech2010
2012-03-29 · TA获得超过1062个赞
知道小有建树答主
回答量:1025
采纳率:100%
帮助的人:906万
展开全部
例如表cj
名字 科目 分数
A 语文 100
A 数学 90
A 外语 99
B 语文 90
B 数学 80
B 外语 100

方法 (一)
select * from cj
select 名字, max(case 科目 when '语文' then 分数 else 0 end ) 语文,
max(case 科目 when '数学' then 分数 else 0 end ) 数学,
max(case 科目 when '外语' then 分数 else 0 end ) 外语
from cj
group by 名字

方法 (二)

declare @sql varchar(800)
set @sql='select 名字'
select @sql =@sql+', max(case 科目 when '''+科目+''' then 分数 else 0 end )['+科目+']'
from (select distinct 科目 from cj ) as a
set @sql=@sql+'from cj group by 名字'
exec(@sql)

结果:

名字 语文 数学 外语
A 100 90 99
B 90 80 100
匿名用户
2012-03-25
展开全部
有意思的问题 给出一个参考的URL: 假设你表是这样的结构部件 入库日期 入库数量 A 1/1 10 A 1/1 5 A 1/2 10 B 1/5 10 其实就是两种方法,假设你的数据库是11以前的,只能先定义好查哪天到哪天 然后那么 selct 部件, sum( decode(入库日期=1号,入库数量,0), sum( decode(入库日期=2号,入库数量,0), 以此类推 from 入库表 group BY 部件(原理上就是将不是这天的变成0,再合计)要是Oracle数据库是11的话,就简单了,直接pivot搞定 pivot语法就不说了,网上一堆一堆的 ~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
老师小乔
2012-03-25 · TA获得超过3680个赞
知道大有可为答主
回答量:1985
采纳率:66%
帮助的人:690万
展开全部
看看这个链接对你有没有帮助

参考资料: http://wenku.baidu.com/view/5dda306127d3240c8447efb1.html

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式