我有3行,但我需要确定偏移的行,即正数量与负数量相匹配,对于相同的供应商+发票+支票号码组合。
Vendor_Code Invoice_Number Check_Number Payment_Amount Subcontract_Job
----------- -------------- ------------ -------------- ---------------
DEVONEL 6462 35272 8257.50 BUP008
DEVONEL 6462 35272 -8257.50 BUP008
DEVONEL 6462 35665 8257.50 BUP008
只返回前两行,因为第三行没有匹配的负偏移量。
答案 0 :(得分:2)
SELECT x1.<cols>, x2.<cols>
FROM dbo.YourTable AS x1
INNER JOIN dbo.YourTable AS x2
ON x1.Vendor_Code = x2.Vendor_Code
AND x1.Invoice_Number = x2.Invoice_Number
AND x1.Check_Number = x2.Check_Number
AND x1.Payment_Amount = -x2.Payment_Amount;
答案 1 :(得分:0)
如果金额相同(没有舍入差异或某种“接近”类型的金额问题 - 如果是这样,请考虑舍入金额字段或添加/减去保证金。 )然后你可以做一个基于集合的比较,如:
Select VendorCode, InvoiceNumber, CheckNumber, Amount from dbo.tablename
intersect
Select VendorCode, InvoiceNumber, CheckNumber, Amount from dbo.tablename
它会为您提供匹配付款的列表。如果您只想查找不匹配的记录,可以使用Except而不是相交。 (如果您执行了上述操作并将其传递给更新,则会在发票系统中标记非平衡付款的标记字段。)
我会在CTE中使用上述内容,然后将其提供给更新。