我正在使用此查询来获取结果,
SELECT *
FROM TRXN_REPORT CNT,
TBL_CUSTINFO CUSTADDINFO,
TBL_DEAL_EVT EVENT,
TBL_MISCADDR CIFMISC
WHERE CNT.INTERNAL_REF_NUM = EVENT.INTERNAL_REF_NUM
AND CNT.BRANCH = EVENT.BRANCH
AND CNT.QFXVERSION = EVENT.QFXVERSION
AND CNT.VALUEDATE = EVENT.VALUEDATE
AND CNT.LIQ_STATUS = 'L'
AND EVENT.EVENTCODE = 'LLIQ' -- Liquidation Event
AND CUSTADDINFO.CUSTOMER_NO = CNT.CUST_NUM
AND CIFMISC.CUSTOMER_NUMBER = CNT.CUST_NUM
AND CUSTADDINFO.REC_STATUS ='O'
AND CIFMISC.REC_STATUS = 'O'
AND MY_PBG_CUSTOMER = 'Y'
AND (BUYCCYCODE = 'USD' OR SELLCCYCODE ='USD')
这里这个条件
AND CIFMISC.CUSTOMER_NUMBER = CNT.CUST_NUM
仅获取TBL_MISCADDR
和TRXN_REPORT
表中存在的那些记录,现在作为要求的更改我想要执行左外连接以便获取{中不存在的记录{1}}表,但存在于TBL_MISCADDR
中。如何执行此操作以及维护所有条件。
答案 0 :(得分:0)
您必须在ON
的{{1}}子句中指定联接的条件。因此,您在WHERE子句中的当前条件应该分为加入表的条件(这些条件移到JOIN
子句),其余用于选择行 - 这些条件应保留在{{1子句。示例(根据您的数据不知道我是否正确,但您会明白这一点):
ON
这样您就可以安全地使用WHERE
,并且还会包含其他表中不存在记录的行。
...获取
SELECT * FROM TRXN_REPORT CNT LEFT JOIN TBL_DEAL_EVT EVENT ON CNT.INTERNAL_REF_NUM = EVENT.INTERNAL_REF_NUM AND CNT.BRANCH = EVENT.BRANCH AND CNT.QFXVERSION = EVENT.QFXVERSION AND CNT.VALUEDATE = EVENT.VALUEDATE LEFT JOIN SOME_OTHER_TABLE T ON ... WHERE AND CUSTADDINFO.REC_STATUS ='O' AND CIFMISC.REC_STATUS = 'O' AND MY_PBG_CUSTOMER = 'Y' AND (BUYCCYCODE = 'USD' OR SELLCCYCODE ='USD') ....
表中没有的记录但是 出现在LEFT JOIN
。
可以使用TBL_MISCADDR
完成。