0

私は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

2番目の参加は機能しますが、データを取得するには時間がかかりすぎます。これを行う他の方法はありますか?

以前は

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 に答える