当我使用INNER JOIN时,该查询什么都不返回,但是当我将其更改为LEFT OUTER JOIN时,我得到的是NULL值。
SELECT RMDET.CUST_CODE,
OHORDER.SHIP_TO_NAME,
RMDET.TRAN_REF_NO,
RMDET.TRAN_DATE,
RMDET.TRAN_AMT
FROM RMDET (NOLOCK)
LEFT OUTER JOIN OHORDER (NOLOCK) ON OHORDER.ORDER_NO = RMDET.TRAN_REF_NO
WHERE RMDET.TRAN_AMT_APPLIED = 0
ORDER BY RMDET.CUST_CODE
输出:
CUST_CODE SHIP_TO_NAME TRAN_REF_NO TRAN_DATE TRAN_AMT
------------------------------------------------------------------------
101 NULL 5181 2020-02-13 30.21
101 NULL 5593 2020-02-18 102.07
106 NULL 232793 2019-10-25 66.19
107 NULL 5476 2020-02-17 345.00
107 NULL 3230 2020-01-20 194.00
它应该显示“ AC Hotel”,它是101,而不是NULL,依此类推。 OHORDER.ORDER_NO和RMDET.TRAN_REF_NO是主键,但我认为问题可能在于表中的列无关。如何检查?
这是RMDET的数据:
CUST_CODE TRAN_REF_NO TRAN_TYPE TRAN_DATE TRAN_AMT TRAN_AMT_APPLIED
101 5181 I 2020-02-13 30.21 0.00
来自OHORDER:
ORDER_NO CUST_CODE SHIP_TO_CODE SHIP_TO_NAME
5181 101 S AC HOTEL
列更多,但与查询无关。