CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  开发

请问高手,怎么样将下列的N条记录转换成一行呀,在线给分

楼主lovelanzhi716(仰天长啸)2005-05-10 15:32:38 在 Oracle / 开发 提问

记录如下:  
  eid           classid             studentid                 examid                 course               score  
  jinlong         13                         8133                         13                     english               110  
  jinlong         13                         8133                         13                     chinese               120  
  jinlong         13                         8133                         13                     math                     130  
  .  
  .  
  .  
  我想得到如下记录:  
  eid           classid           studentid         examid           english       chinese           math     ......  
  jinlong         13                     8133               13                       110             120               130       ......  
  主要是courseid不是固定的,这样能用一条SQL语句写出来吗?请大家帮忙了 问题点数:100、回复次数:10Top

1 楼siba(幽兰晓雨)回复于 2005-05-10 16:08:17 得分 10

用decode  
  select   eid       ,     classid     ,         studentid         ,         examid     ,  
  max(decode(course,'english',score,NULL)),              
  max(decode(course,'chinese',score,NULL)),  
  max(decode(course,'math',score,NULL)),  
  ....  
  from   table  
  group   by   eid       ,     classid     ,         studentid         ,         examidTop

2 楼bisliu(还在潜水的鱼)回复于 2005-05-10 18:42:56 得分 11

楼上的好像不能凑成同一个eid出一条记录吧Top

3 楼railgunman(堕落男人)回复于 2005-05-11 07:57:39 得分 22

好象用连接可以Top

4 楼liuyi8903(不让疑问伴随)回复于 2005-05-11 08:59:38 得分 22

这样的输出可以做到.不过这个需要写过程或者函数来解决这个问题.  
   
  但最好是在应用程序端来解决像这种的输出问题.Top

5 楼lovelanzhi716(仰天长啸)回复于 2005-05-11 09:56:36 得分 0

请问   liuyi8903(风继续吹)  
  你有这方面的实例吗?因为如果例数过多,用SQL语句效果应该会好些Top

6 楼lovelanzhi716(仰天长啸)回复于 2005-05-16 13:48:54 得分 0

请大家帮忙啊Top

7 楼zsfww1205(努力学习oracle)回复于 2005-05-16 14:26:28 得分 11

利用decode进行行列转换,你试试看,没问题的  
  select   eid,classid,studentid,examid,  
  max(decode(course,'english',score,NULL)),              
  max(decode(course,'chinese',score,NULL)),  
  max(decode(course,'math',score,NULL))  
  from   table  
  group   by   eid  
  Top

8 楼ipv(宁静致远)回复于 2005-05-17 13:08:03 得分 11

主要是courseid不是固定的,  
   
   
  就没办法了  
  写程序或者存储过程吧Top

9 楼lovelanzhi716(仰天长啸)回复于 2005-05-19 10:41:23 得分 0

你有这方面的存储过程吗?Top

10 楼jmbd(江米糕)回复于 2005-05-20 12:30:00 得分 13

用decode是个好办法  
  select   studentsid,studentsname,classid,  
  max(decode(course,'english',score,NULL))   as   english,    
  max(decode(course,'chinese',score,NULL))   as   chinese,      
  max(decode(course,'math',score,NULL))   as   math  
  from   students   group   by   studentsid,studentsname,classidTop

相关问题

  • 菜鸟问题:(数据库)精确定位到一行后怎样连续往后读n行记录?
  • 如何一行打印多条记录??
  • 在表中删除一行记录
  • dagagrid一行显示多条记录
  • 如何对一个文件操作,取出一行记录,删除一行记录。特急?
  • 请问怎样在设计报表时一行存放两条记录?(通常都是一行一个记录)
  • insert一行记录时,取这一行记录的一个字段值(自动递增的字段)
  • ClientDataSet在QuickReport只能显示第一行记录,怎么回事?
  • 怎么让记录显示在一行上?
  • 超级送分题:给TDBGrid手动添加一行记录

关键词

  • null
  • jinlong138133
  • examid
  • eid
  • studentid
  • decode
  • classid
  • course
  • english
  • chinese

得分解答快速导航

  • 帖主:lovelanzhi716
  • siba
  • bisliu
  • railgunman
  • liuyi8903
  • zsfww1205
  • ipv
  • jmbd

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo