你把表结构和数据贴出来吧,光看SQL很郁闷

解决方案 »

  1.   

    表mit_cust(mc)
    cust_cd (pk)表mit_equip(me)
    equip_no(pk) 没用上
    company_cd
    so_cd
    sf_c_cd
    cust_cd
      

  2.   

    先看SQL1
    SELECT CUST_CD
      FROM MIT_CUST MC
     WHERE EXISTS( SELECT ME.COMPANY_CD
                     FROM MIT_EQUIP ME
                    WHERE ME.COMPANY_CD = MC.CUST_CD
                 )
    这里列出了MIT_CUST.CUST_CD和MIT_EQUIP.COMPANY_CD相等的CUST_CD值而按照你sql2的写法,如果sql1有数据的话,sql2可以写成这样
    SELECT MC.CUST_CD
      FROM MIT_CUST MC
     WHERE EXISTS( SELECT ME.SO_CD
                     FROM MIT_EQUIP ME
                    WHERE ME.SO_CD = MC.CUST_CD
                 )
    下面的exists只是判断sql存在数据否,于前面语句并无关联。
    所以这里列出了MIT_CUST.CUST_CD和MIT_EQUIP.SO_CD相等的CUST_CD值
    可以看出2条sql查出的结果并无字段对应关系,应该是结果对应关系试试下面语句:
    select a.CUST_CD parent,b.CUST_CD child from 
    (SELECT CUST_CD FROM MIT_CUST MC WHERE EXISTS( SELECT ME.COMPANY_CD FROM MIT_EQUIP ME WHERE ME.COMPANY_CD = MC.CUST_CD ) a,
    (SELECT MC.CUST_CD,substr(MC.CUST_CD,1,2) PCD FROM MIT_CUST MC WHERE EXISTS( SELECT ME.SO_CD FROM MIT_EQUIP ME WHERE ME.SO_CD = MC.CUST_CD) b
    where a.CUST_CD = b.PCD(+)
      

  3.   

    出来了
    谢谢grace,谢谢大家
    结贴