大家看看连个vc_fundcode 有A对B,B对A两种情况,现在我想去掉其中之一,只留A对B。这个sql 我该怎么写?感谢!select f.vc_fundcode, i.vc_fundcode, f.vc_fundname, i.vc_fundname
  from d_fund_info f, d_fund_info i
 where f.vc_fundcode != i.vc_fundcode
   and f.vc_fundcode in ('3F1033', '3F1025','3F1A15')
   and i.vc_fundcode in ('3F1033', '3F1025','3F1A15')

解决方案 »

  1.   

    把条件中的不等于改成小于 (也可以 是大于,看你需要)select f.vc_fundcode, i.vc_fundcode, f.vc_fundname, i.vc_fundname
      from d_fund_info f, d_fund_info i
     where f.vc_fundcode < i.vc_fundcode
       and f.vc_fundcode in ('3F1033', '3F1025','3F1A15')
       and i.vc_fundcode in ('3F1033', '3F1025','3F1A15')
      

  2.   

    select * from (select f.vc_fundcode , i.vc_fundcode , f.vc_fundname, i.vc_fundname,row_number() over(partition by f.vc_fundcode,i.vc_fundcode order by  f.vc_fundname desc) rn 
       from d_fund_info f, d_fund_info i
      where f.vc_fundcode != i.vc_fundcode
        and f.vc_fundcode in ('3F1033', '3F1025','3F1A15')
        and i.vc_fundcode in ('3F1033', '3F1025','3F1A15') ) t where t.rn=1;