select distinct ww.strike_billno  from
         ( select h.strike_billno ,h.stotalprice ,i.pk_corp ,i.cvendormangid  from  cg_invoice i ,cg_invoice_b h where i.pk_id_invoice = h.pk_id_invoice and i.cvendormangid = '0001551000000000K9BA' and i.pk_corp = '1007' ) ww , 
         (select  hh.strike_billno ,nvl(sum(hh.itotalprice),0) itotal ,ii.pk_corp ,ii.cvendormangid  from  cg_invoice ii ,cg_invoice_b hh where ii.pk_id_invoice = hh.pk_id_invoice and ii.cvendormangid = '0001551000000000K9BA' and ii.pk_corp = '1007' group by hh.strike_billno ,ii.pk_corp ,ii.cvendormangid )wq
   where wq.strike_billno =ww.strike_billno and wq.pk_corp = ww.pk_corp and wq.cvendormangid = ww.cvendormangid and ww.stotalprice = wq.itotal ; 得到三条数据:CF0905130001 CF0906020003 CF0906090003 
select a.vinvoicecode,a.dinvoicedate,c.invcode,c.invname,b.ninvoicenum,b.noriginalcurprice,b.noriginalcurmny 
   from bd_invbasdoc c,po_invoice a,po_invoice_b b 
  where  a.cinvoiceid=b.cinvoiceid  
 and   b.cbaseid=c.pk_invbasdoc 
 and   a.pk_corp='1007'
     and   a.cvendormangid='0001551000000000K9BA' and a.vinvoicecode not in ('CF0905130001 ','CF0906020003 ' ,'CF0906090003 ')得到29条数据(NOT IN 此时有效果)
select a.vinvoicecode,a.dinvoicedate,c.invcode,c.invname,b.ninvoicenum,b.noriginalcurprice,b.noriginalcurmny 
   from bd_invbasdoc c,po_invoice a,po_invoice_b b 
  where  a.cinvoiceid=b.cinvoiceid  
 and   b.cbaseid=c.pk_invbasdoc 
 and   a.pk_corp='1007'
     and   a.cvendormangid='0001551000000000K9BA' and a.vinvoicecode not in ( select distinct ww.strike_billno  from
                  ( select  h.strike_billno ,h.stotalprice ,i.pk_corp ,i.cvendormangid  from  cg_invoice i ,cg_invoice_b h
                  where i.pk_id_invoice = h.pk_id_invoice and i.cvendormangid = '0001551000000000K9BA' and i.pk_corp = '1007' 
                  ) ww , 
                  (select  hh.strike_billno ,nvl(sum(hh.itotalprice),0) itotal ,ii.pk_corp ,ii.cvendormangid  from  cg_invoice ii ,cg_invoice_b hh
                  where ii.pk_id_invoice = hh.pk_id_invoice and ii.cvendormangid = '0001551000000000K9BA' and ii.pk_corp = '1007' group by hh.strike_billno ,
                  ii.pk_corp ,ii.cvendormangid ) wq
           where wq.strike_billno =ww.strike_billno and wq.pk_corp = ww.pk_corp and wq.cvendormangid = ww.cvendormangid and ww.stotalprice = wq.itotal 
     );得到34条数据,NOT IN 没发挥出效果!!!
为什么?

解决方案 »

  1.   

    大家知道 oracle 关键字 new 的用法。没分数了,只能串帖了。
      

  2.   

    呵呵 自己解决了  原来函数出来的用空格,用trim解决了  
      

  3.   

    通过视图查看关键字(保留字)
    SELECT * FROM v$reserved_words
    关键字::NEW 和:OLD使用方法和意义,new 只出现在insert和update时,old只出现在update和delete时。在insert时new表示新插入的行数据,update时new表示要替换的新数据、old表示要被更改的原来的数据行,delete时old表示要被删除的数据。注意:在触发器中不能使用commit。