【解決方法】別のテーブルの列のキーワードに基づいて値を除外する


やあ、

注文番号を含むデータセットと、それらの注文のすべての商品を含むデータセットがあります。 それらの項目の中には、上記のものは単なる訂正請求であるというコメントも含まれています。 そのようなコメントを含む注文全体を除外する必要があります。 問題は、私が書いたコードはコメントを除外しているだけですが、項目はそのまま残り、値を示していることです。 この注文内の商品のいずれかに特定のキーワードが含まれている場合、注文全体を除外するにはどうすればよいですか?

例:

注文番号データベース:

ドキュメントネット番号

1111111

この順序のアイテム

ドキュメント番号 | 項目名 | LineTotalValue

1111111 | シャンプー 200ml | £9999
1111111 | 間違った請求書が送信されました。 | £0

私が試したこと:

以下のコードはコメントのある項目を除外しますが、キーワードのない項目により DocumentNo が完全に除外されません。

これまでの私のコード:

SELECT
        'US' AS Region,
        T1.CustomerDocumentNo,
        T1.SOPOrderReturnID,
        T1.DocumentNo,
        T2.LineTotalValue,
        T2.LineQuantity,
        T2.SOPOrderReturnLineID,
        T1.DocumentDate,
        T1.RequestedDeliveryDate,
        T1.PromisedDeliveryDate,
        TotalNetValue AS OrderNetValue,
        TotalGrossValue AS OrderGrossValue,
        TotalTaxValue AS OrderTaxValue,
        T1.DocumentDueDate,
        T1.DateTimeCreated,
        T4.Name,
        T3.CustomerAccountName,
        T3.SLCustomerAccountID,
        T2.ItemCode,
        T2.ItemDescription,
        T5.StockItemTypeName,
        T6.SOPOrderReturnTypeName,
        T7.ItemName
    FROM
        SOPOrderReturn AS T1

        JOIN SOPOrderReturnLine AS T2 ON 
             T1.SOPOrderReturnID=T2.SOPOrderReturnID
        JOIN SLCustomerAccount AS T3 ON 
             T1.CustomerID=T3.SLCustomerAccountID
        JOIN DocumentStatus AS T4 ON 
             T1.DocumentStatusID=T4.DocumentStatusID
        JOIN StockItemType AS T5 ON 
             T2.StockItemTypeID=T5.StockItemTypeID
        JOIN SOPOrderReturnType AS T6 ON 
             T6.SOPOrderReturnTypeID=T1.DocumentTypeID
        LEFT JOIN SOPInvoiceCreditLine AS T7 ON 
             T7.SOPOrderReturnLineID=T2.SOPOrderReturnLineID

WHERE DocumentNo NOT IN (SELECT ItemName
					FROM SOPInvoiceCreditLine 
					WHERE ItemName LIKE'%Invoice%')

解決策 1

お返事をありがとうございます。 私は自分で解決策を見つけることができました(ChatGPTの「少し」の助けを借りて)
他の人のためにここに投稿します。

したがって、次のようになります。

WHERE T1.DocumentNo NOT IN (
      SELECT DISTINCT T8.DocumentNo
      FROM SOPOrderReturn AS T8

      JOIN SOPOrderReturnLine AS T9 ON 
            T8.SOPOrderReturnID = T9.SOPOrderReturnID
      JOIN SOPInvoiceCreditLine AS T10 ON 
            T10.SOPOrderReturnLineID = T9.SOPOrderReturnLineID

      WHERE T10.ItemName LIKE '%invoice%'
      OR T10.ItemName LIKE '%Credit%')

解決策 2

コメント

タイトルとURLをコピーしました