SELECT T.CO,T.EVEBXINSHPQTY,....,T.PRCUN,T2.TXEMP FROM TXD000GHFA1 T ,T08040DAC21 T2 
WHERE T.CO = T2.CO(+) AND T.DTLVDP = T2.DTLVDP(+) AND T.PDNO = T2.PDNO(+) 
AND NVL(T.PDURCLASSID,'@') = NVL(T2.PDURCLASSID,'@')(+) AND NVL(T.SPEC,'@') = NVL(T2.SPEC,'@')(+) 如上面的SQL:
我的两个TABLE T,T2想通过5个栏位相连接,因为T2资料不全时,也要查出T1的资料,所以用到右连接。但因为后面的两个栏位是可以为NULL的,所以要加NVA()处理,这样之后,NVL(T2.PDURCLASSID,'@')(+) AND NVL(T.SPEC,'@') = NVL(T2.SPEC,'@')(+)就报错,,请各位大侠帮忙看一下。

解决方案 »

  1.   

    后面两个条件可以去掉(+),因为值为空时,转换成了@
    SELECT T.CO,T.EVEBXINSHPQTY,....,T.PRCUN,T2.TXEMP FROM TXD000GHFA1 T ,T08040DAC21 T2 
    WHERE T.CO = T2.CO(+) AND T.DTLVDP = T2.DTLVDP(+) AND T.PDNO = T2.PDNO(+) 
    AND NVL(T.PDURCLASSID,'@') = NVL(T2.PDURCLASSID,'@') AND NVL(T.SPEC,'@') = NVL(T2.SPEC,'@') 
      

  2.   

    有问题:
      当T中PDURCLASSID有值,而T2中无对应资料,则不会做右连接!