您当前的位置: 首页 > 数据库教程 > Oracle教程 > oracle解决按号单排序和横向记录拼字段问题

oracle解决按号单排序和横向记录拼字段问题

作者:不详 来源:网络 发布时间: 2011-10-21 15:43 点击:
oracle数据库如何解决按号单排序和横向记录拼字段问题呢?本文举例说明这个问题,以下是案例遇到的问题及其解决方案: 问题1.客户提供了一个号单,如:'A001','B002','X008','D003'这个号单的顺序是有人为业务含义的。要求查询出这些号单的详细信息,并且查询出来的结

oracle解决按号单排序和横向记录拼字段问题

  oracle数据库如何解决按号单排序和横向记录拼字段问题呢?本文举例说明这个问题,以下是案例遇到的问题及其解决方案:
  
  问题1.客户提供了一个号单,如:'A001','B002','X008','D003'这个号单的顺序是有人为业务含义的。要求查询出这些号单的详细信息,并且查询出来的结果要按号单的提供顺序排序。
  
  解决:其实查询出来很简单,如:select*from table_a where formCode in('A001','B002','X008','D003');
  
  关键是要按号单的顺序进行排序,实现方式可以参考oracle的函数,使用instr函数。
  
  实现结果:
  
  select*from table_a where fromCode in('A001','B002','X008','D003')order by instr('A001,B002,X008,D003',formCode);
  
  当然还有其他很多方法实现,比如数据库建一张临时表,把号单插入,并插入序号列,使用表关联实现排序。还有其他高人的一些方法,但我想使用instr函数应该是最简单一种行之有效的方法了。
  
  问题2.表记录的列组合
  
  例如:表a班级人员,表b学生成绩,
  
  表a
  
  班级编号班级学号姓名
  
  C001一年1班001张三
  
  C001一年1班002李四
  
  表b
  
  学号姓名科目成绩
  
  001,张三,语文,80
  
  001,张三,数学,90
  
  要求实现一个查询,查询一个班级所有的学生成绩,要求的列是:班级编号班级学号姓名语文成绩数学成绩
  
  实现:考虑到这时一个把表记录按类型提取到查询列上的要求,需要用多次表关联来实现。
  
  实现结果:
  
  select a.班级编号,a.班级,a.学号,a.姓名,b1.成绩,b2.成绩
  
  om a left join(select学号,成绩from b where课程=‘语文’)b1on a.学号=b1.学号left join select学号,成绩from b where课程=‘数学’)b2on a.学号=b2.学号

分享到:
本文"oracle解决按号单排序和横向记录拼字段问题"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4