还要一个条件
有两个表A:                                     B:
 InID    BARCODE  InWareType Inwaredate       Outid Barcode OutWareType OutWareDate      
  1      aa          bbb       2006-01-01        1    aa       cc          2006-01-02
  2      aa          ccc       2006-01-02        2    bb       cc          2006-01-03
  3      bb          bbb       2006-01-03       
  4      cc          bbb       2006-01-03  
  5      cc          null      2006-01-03 
  6      bb          null       2006-01-03 
要得到如下视图
 InID    BARCODE  InWareType Inwaredate             
  2      aa          ccc       2006-01-02             
  5      cc          null       2006-01-03  
就是要以barcode分组汇总,如果表a的记录条数(intype 不为空)多于表b的记录条数,则取出表a中inid号最大的记录

解决方案 »

  1.   

    select *
    from tableA aa 
    left join (select max(InID) as InID 
              from tableA 
              group by barcode) bb on aa.InID = bb.InID
    left join (select a.barcode
               from tableA a 
               left join tableB b on a.barcode = b.barcode
               where a.InWareType is not null
               group by a.barcode
               having count(a.InID) > count(b.Outid)) cc on aa.barcode = cc.barcode
    where bb.InID is not null and cc.barcode is not null
      

  2.   

    没有明白为什么InID 的  2和 5
      

  3.   

    因为要找到a表中的barcode且要满足条件intype 不为空的记录条数大于b表中相同的barcode的记录条数,如果这条件满足,则取出a表中inid值最大的记录