MODEL_CODE PO_NO VEND_CODE TAX_GB CHULHA_DATE  CHULHA_Q CHULHA_SER
1 E347    124771     52     01 2007-09-11  350        01 
2 E347    124771     52           01 2007-09-11  250        02
3 E347    LFSPIL20   52           01 2007-09-11  120        03 
4 H531    125561     BT           01 2007-09-28  140        01 
5 H531    125561     BT           01 2007-09-28  130        01
6 H531    125561     BT           01 2007-09-28  210        02
7 H531    LFSPIL21   BT           02 2007-09-28  250        03  
已经知道表中有如上数据,
现在又得到2列数据,想根据已经存在的数据获取出货序列号CHULHA_SER 就是下面记录的??
H531    125561     BT           01 2007-09-28  130        ??(想得到01)
  E347    LFSPIL22   52     01 2007-09-11  230        ??(想得到02)
根据MODEL_CODE PO_NO VEND_CODE TAX_GB CHULHA_DATE区分,同时根据得到的区分获取数量
这条新记录  H531    125561     BT           01 2007-09-28  130        ?? 匹配区分的记录有
4 H531    125561     BT           01 2007-09-28  140        01 
5 H531    125561     BT           01 2007-09-28  210        01
6 H531    125561     BT           01 2007-09-28  210        02

01出货总和现在是350,02出货总和现在是210,新纪录的数量上130,01,02现在出货数量+新纪录数量<500 都可以,我要得到出货序列01求PL/SQL语句实现以上功能,应该有点类似优先匹配的规则,存储过程.游标都可(可加分)

解决方案 »

  1.   

    根据MODEL_CODE PO_NO VEND_CODE TAX_GB CHULHA_DATE区分
    这条看不出来
    E347    LFSPIL22  52    01 2007-09-11 230        ??(想得到02) 
    这个仅从MODEL_CODE上看到区分了
      

  2.   

    不好意思E347    LFSPIL22  52    01 2007-09-11 230        ??(想得到02) 
    订单写错了
    应该是E347      124771    52    01 2007-09-11 230        ??(想得到02) 
      

  3.   

    我之前想到是新来的每条记录按照之前存在的区分和序列号去求SUM,如果和小于500的话就获取该序列号,正在进行中.....
      

  4.   

    看半天还是不明白,不知道楼主想要干什么,是我理解能力太差还是你本身需求没说清楚?
    你怎么知道130那条是新??
    还有你黄色得这里
    5 H531    125561    BT          01 2007-09-28 210        01 
    上面得第5条明明是130,怎么这里又变了???
    建议你把数据整理明白了再说吧。
    需求不明让人家瞎猜。。没劲
      

  5.   

    楼上的,理解不清也正常.业务的原因吧,新加的数据是从其他地方汇总来的,然后根据表中已经的数据:订单,客户,出货日期,类别,保课税,获取其中的CHULHA_SER(出货号)
      

  6.   

                select min(chulha_ser) from
                (
                  SELECT t.chulha_ser
                  into v_ser
                  from tb_lsrt01 t
                  where TRIM(a.model_code)=TRIM(v_model)
                  and TRIM(a.po_no)=TRIM(v_po)
                  and TRIM(a.vend_code)=TRIM(v_vend)
                  and TRIM(a.tax_gb)=TRIM(v_tax)
                  and TRIM(a.chulha_date)=TRIM(chudate)
                  group by t.model_code,t.po_no,t.vend_code,t.tax_gb,t.chulha_date, t.chulha_ser
                  having  sum(t.chulha_q) +v_chuq<500
                )
    其实我是想再同时出现多个的时候智能匹配的,只能一个一个来了,效率低了,先用了,散分