select           
a.latn_id,          
a.prd_inst_id,      
a.serv_nbr,         
a.cust_id,                   
a.urban_rural_id,   
a.chrg_level,       
a.acct_item_type_id,
a.prd_id,                   
a.ofr_id,           
a.chrg,             
a.bill_dur,         
a.raw_dur,          
a.calls             
 from tb_b_ft_ofr_rev_200807_bk a
minus 
select      
b.latn_id,          
b.prd_inst_id,      
b.serv_nbr,         
b.cust_id,                  
b.urban_rural_id,   
b.chrg_level,       
b.acct_item_type_id,
b.prd_id,                     
b.ofr_id,           
b.chrg,             
b.bill_dur,         
b.raw_dur,          
b.calls             
from tb_b_ft_ofr_rev_200807_bk_db b我的a 表和b表的表结构都是一样的,a表比b表的记录数多,我想看多出那些记录数,于是就这么写,但是返回的结果却是0条记录,请问这是怎么回事,

解决方案 »

  1.   

    可能是有重复的。你查下select distinct count(*) from tb_b_ft_ofr_rev_200807_bk
    然后你在select distinct count(*) from tb_b_ft_ofr_rev_200807_bk_db看非重复条数是不是一样。
      

  2.   

    A表有重复记录,使用distinct吧
      

  3.   

    Oracle 11.1.0.6.0
    ----------
    看到这个问题有点共鸣,我也遇到过这类问题,当时请教了团队内的高手解决的
    表TBL
    A         B
    -----------
    1         a
    2         a
    3         a
    4         b
    5         c我的办法只能取出
    1     a
    2     a代码如下
    select * from
      (
       select a,b, rank()over(partition by b order by a) t
       from TBL
      ) where t=1