0

我有一个 SQL 查询:

  SELECT * FROM Customer c
  LEFT JOIN  Invoice I ON  I.InvcNum = C.Cust_InvcNum

有些事情发生了变化,连接不起作用,因为“Cust_InvcNum”中的数据没有一致性。所以现在当它没有找到连接的记录或者它为空时,它需要检查另一个条件。

 LEFT JOIN Invoice I ON I.InvcNum = (SELECT p.InvcPrefix FROM Prefix WHERE p.DealerID = I.DealrID )  + '-' + I.InvcNum

第二次加入我确实有效,但它需要很长时间才能获取我的数据。有没有其他方法可以做到这一点。

早些时候它曾经是

加入 I.InvcNum = C.Cust_InvcNum
两列具有相同的数据,如 DlrCd-InvcNum 即两列 1234-A789 但它不能与上述数据匹配,或者现在发票表中的列“InvcNum”可以填充为Dlrd-InvcNum 或 InvcPrefix-InvcNum

所以 InvcNum = 1234-A789 但 CustNum = I94-A789 所以我们需要检查是否为 InvoicePrefix-InvcNum

4

1 回答 1

0
SELECT *
FROM Customer c 
  LEFT JOIN (
             SELECT i.InvcNum, p.InvcPrefix + '-' + I.InvcNum AS pInvcNum 
             FROM Invoice i LEFT JOIN Prefix p ON i.DealrID = p.DealrID
             ) ip ON c.Cust_InvcNum = CASE WHEN c.Cust_InvcNum = ip.InvcNum 
                                           THEN ip.InvcNum 
                                           ELSE ip.pInvcNum END
于 2012-12-19T08:44:05.363 回答