我有一个SQL查询:
SELECT * FROM Customer c
LEFT JOIN Invoice I ON I.InvcNum = C.Cust_InvcNum
某些事情发生了变化,并且连接不起作用,因为'Cust_InvcNum'中的数据没有一致性。所以现在当它找不到连接的记录或者它是null时,它需要检查另一个条件。
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
答案 0 :(得分: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