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

   今天为客户提供报表时,碰到一个小问题,客户提供给我的是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博客 ” ,链接:http://blog.itpub.net/9240380/viewspace-755036/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9240380/viewspace-755036/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值