我已經繼承了一個查詢,該查詢將一個表的PAYMENT_DETAILS字段簡單地與第二個表的PAYMENT_DETAILS字段進行匹配。它會查看是否在第一PAYMENT_DETAILS字段中的數據是在其他任何地方:使用Charindex查找記錄
left outer join payroll_class P on
charindex(P.payment_details,B.PAYMENT_DETAILS) > 0
我只是想找出正確的方式做這個相反。我只需要來自第一個表的PAYMENT_DETAILS與第二個表的PAYMENT_DETAILS不匹配的記錄。
我試着使用:
left outer join dimpayroll_classification P on
charindex(P.payment_details,B.PAYMENT_DETAILS) = 0
但這並沒有返回所期望的結果 - 我不知道這在邏輯上是有道理的。然後我使用子查詢:
WHERE customer NOT in (
select customer from table b
left outer join dimpayroll_classification P on
charindex(P.payment_details,B.PAYMENT_DETAILS)>0
)
但這也沒有返回任何預期的結果。什麼是最好的方式去做這件事? 謝謝!
UPDATE:
我使用下面的查詢來識別的結果,但是他們都沒有什麼我期待的是一致的。表A有交易,表B有「Payment_Details」。 「Payment_Details」不應該存在於表C中的「payment_details」列中的任何地方。
我的結果正在返回一些記錄,其中某個特定客戶的表C中的「payment_details」中的某些文本具有payment_details(來自表B) 。我只想記錄表B中每條記錄的payment_details都不在整個表C中的位置,所以看起來這個邏輯正在拾取比它應該更多的記錄。
我目前使用下面的查詢:
SELECT DISTINCT(a.CUSTOMER), a.REF_NO, a.TRAN_TYPE,
a.ACCT_NO, a.AMOUNT, a.AUTH_DATE,
b.ORDERING_CUST, b.PAYMENT_DETAILS
FROM TRANSFER_HIS A
INNER JOIN TRANSFER_EXTEND_HIS B
ON A.REF_NO = B.REF_NO
INNER JOIN payroll_class c
ON charindex(c.payment_details, b.PAYMENT_DETAILS) = 0
WHERE A.CUSTOMER IS NOT NULL
and A.AUTH_DATE > '2015-05-01'
and A.TRAN_TYPE = 'ACH'
我怎樣才能提高查詢不拉任何記錄,其中B表和表之間的payment_details比賽C.
謝謝您的答覆。我在我的問題中添加了一個更新來澄清併發布我當前的查詢。希望這有助於解決問題... – NDubonix