我继承了一个查询,该查询仅将一个表的 PAYMENT_DETAILS 字段与第二个表的 PAYMENT_DETAILS 字段匹配。它查看第一个 PAYMENT_DETAILS 字段中的数据是否在另一个字段中的任何位置:
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
)
但这也没有按预期返回任何结果。解决此问题的最佳方法是什么?谢谢!
更新:
我正在使用以下查询来识别结果,但是它们与我正在寻找的结果不一致。表 A 有交易,表 B 有“Payment_Details”。“Payment_Details”不应存在于表 C 中“payment_details”列的任何位置。
我的结果是返回一些记录,其中特定客户的 payment_details(来自表 B)在表 C 中的“payment_details”中有特定文本。我只想要表 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 和表 C 之间的 payment_details 匹配的任何记录。