表A(APK1,APK2,fieldA1,fieldA2,fieldA3)
表B(BPK1,BPK2,fieldB1,fieldB2,fieldB3)检索出当A.APK1='2006'的APK2,fieldA1,fieldA2,fieldA3内容
此时如果A.fieldA1='02' 则再检索出fieldB1,fieldB2,fieldB3,条件是A.APK1=B.BPK1 AND A.APK2=B.BPK2

解决方案 »

  1.   

    select case when A.APK1='2006' then APK2,fieldA1,fieldA2,fieldA end 
           else
    case when A.fieldA1='02' then fieldB1,fieldB2,fieldB3,估计是这样,语法肯定要去确认的
      

  2.   

    SELECT APK2,fieldA1,fieldA2,fieldA3,NULL AS fieldB1,NULL AS fieldB2,NULL AS fieldB3  FROM A WHERE A.APK1='2006' AND NVL(A.fieldA1,'NULL')<>'02' 
    UNION
    SELECT APK2,fieldA1,fieldA2,fieldA3,fieldB1,fieldB2,fieldB3 FROM A,B WHERE A.APK1='2006' AND NVL(A.fieldA1,'NULL')='02' AND A.APK1=B.BPK1 AND A.APK2=B.BPK2
      

  3.   

    select APK2,fieldA1,fieldA2,fieldA3,'' as fieldB1,'' as fieldB2,'' as fieldB3 from a where A.APK1='2006' and A.fieldA1<>'02'
    unionselect a.APK2,a.fieldA1,a.fieldA2,a.fieldA3,b.fieldB1,b.fieldB2,b.fieldB3 from a,b where 
    A.APK1='2006' and A.fieldA1='02' and A.APK1=B.BPK1 AND A.APK2=B.BPK2
      

  4.   

    try:
    select tbA.*,decode(tbA.fieldA1,'02',tbB.fieldB1),
    decode(tbA.fieldA1,'02',tbB.fieldB2),decode(tbA.fieldA1,'02',tbB.fieldB3)
    from tbA,tbB where tbA.APK1='2006' and tbA.APK1=tbB.BPK1(+) AND tbA.APK2=tbB.BPK2(+);
      

  5.   

    谢谢各位了
    最终采用了bzszp(SongZip) 的方式