ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 如何令sql查询的结果集与客户提供的excel表格中列的数据保持一致

如何令sql查询的结果集与客户提供的excel表格中列的数据保持一致

原创 Linux操作系统 作者:wisdomone1 时间:2013-03-01 14:20:14 0 删除 编辑

   今天为客户提供报表时,碰到一个小问题,客户提供给我的是excel表格,表格之中有个列名为订单号码(order_id),
需要我作什么呢,到数据库中查询这些订单号码,并提取与订单相关的数据填充更新到他们发送给我的表格中。
 这里有个问题:订单相关的数据是存储在表:deal_order,用sql根据客户的要求查询后,得到的结果order_id订单号码的
 顺序与客户发送给我的就不一一匹配了,导致要手工
一一匹配,然后把相符的订单数据填充更新到客户所需的excel表格中;
   如何解决令客户提供的订单号码的顺序与经过sql查询后的订单号码的顺序相匹配,或者说相一致呢,这样很简便了。
   直接把查询的结果复制到表格中,发给客业即可,节省了
大量的时间.

  分析:
  客户表格
  order_id
  1
  3
  2
 
  查询的sql
  order_id
  1
  2
  3
 
  如何把客户的表格转换为一种形式,经sql查询后原顺序不变化,即新加一个列即可,此列与原order_id对应
  ,最终对这个新添加的列order by即不打乱原订单的顺序了
 
  --创建表
  create table deal_order(order_id int);
  --插入数据
  insert into deal_order values(1);
  insert into deal_order values(2);
  insert into deal_order values(3);
  insert into deal_order values(4);
  --提交
  commit;
 
  ---添加一个新表t_map,用于映射原表格order_id与新添列的关系
  create table t_map(order_id int,orig_col int);
  ---创建一个序列,基于序列可实现order_id无变更顺序的功能
  create sequence seq_map start with 1;
  --假如原表格提供的订单顺序为:3,2,1,4
  insert into t_map(order_id,orig_col) values(3,seq_map.nextval);
  insert into t_map(order_id,orig_col) values(2,seq_map.nextval);
  insert into t_map(order_id,orig_col) values(1,seq_map.nextval);
  insert into t_map(order_id,orig_col) values(4,seq_map.nextval);
  --提交
  commit;
 
  --运行产生客户报表的sql
  select t_map.order_id,t_map.orig_col
  from deal_order,
       t_map
  where deal_order.order_id=t_map.order_id
  order by t_map.orig_col;
 
SQL>   --运行产生客户报表的sql
SQL>   select t_map.order_id,t_map.orig_col
  2    from deal_order,
  3         t_map
  4    where deal_order.order_id=t_map.order_id
  5    order by t_map.orig_col;
 
                               ORDER_ID                                ORIG_COL
--------------------------------------- ---------------------------------------
                                      3                                       2
                                      2                                       3
                                      1                                       4
                                      4                                       5
  
小结;
      1,勤于思考很重要,绝对可以提高工作效率
      2,借助序列作为纽带,实现客户订单号码在运行sql查询后顺序不打乱
      3,构建一个中间表,作为序列工作的基础  

  

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9240380/viewspace-755036/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
提供针对oracle初学者及进阶的数据库培训,欢迎大家咨询: 微信: wisdomone 微信公众号: lovedb 工作经历: 中国普天 北京科蓝 北京云和恩墨 北京神州新桥

注册时间:2008-04-04

  • 博文量
    2189
  • 访问量
    12686138