如何令sql查詢的結果集與客戶提供的excel表格中列的資料保持一致

wisdomone1發表於2013-03-01

   今天為客戶提供報表時,碰到一個小問題,客戶提供給我的是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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章