0

私たちの組織には、中央購買会社 (CPC) があり、会社間 PO を介して小売会社 (Company_X) に販売し、その後、小売会社が顧客に販売します。私がする必要があるのは、小売販売を元の注文書にリンクすることです。

たとえば、次の(および他の多数の列)を含むテーブルがあります。

Company_X_Sales:

InterCO_PO_no  Sales_Order_No  Part_No  Qty
-------------  --------------  -------  ---
12345          98765           ABCD     10

次に、次のテーブルがあります。

CPC_Sales:

PO_Number  InterCO_SO_No  Part_No  Qty
---------  -------------  -------  ---
00015      12345          ABCD     5  
00012      12345          ABCD     2  
00009      12345          ABCD     4   
00007      12345          ABCD     3 

したがって、10 品目の最終販売は、中央の会社の複数の外部 PO からの部品で構成されていることがわかります。

私ができる必要があるのは、の行を複製しCompany_X_Sales、元の PO 番号を含め、数量を のように設定することCPC_Salesです。

私はこのようなもので終わる必要があります:

Company_X_Sales_EXTD:

PO_Number  InterCO_PO_no  Sales_Order_No  Part_No  Qty
---------  -------------  --------------  -------  ---
00007      12345          98765           ABCD     3
00009      12345          98765           ABCD     4
00012      12345          98765           ABCD     2
00015      12345          98765           ABCD     1

Company_X_Salesを駆動テーブルとして使用する必要がありますCPC_Sales。これは、元の PO 番号を取得するための単なるルックアップです。

これは非常にアグレッシブなタイムスケールを持つ作業の一部であるため、週末まで取り組んでいます。

ソリューションでテーブルの複数のパスが必要な場合や、必要に応じてビューを作成する必要がある場合は気にしません。私は本当に本当に苦労しています。

4

2 に答える 2

0

私はあなたの質問に少し混乱していますが、Company_X_Sales テーブルに 1 行ではなく 3 行を持たせようとしているように思えますが、数量が異なるだけですか? もしそうなら、このようなものがうまくいくはずです:

SELECT S.PO_Number, C.InterCO_PO_no, C.Sales_Order_No, C.Part_No, S.Qty
FROM Company_X_Sales C
   JOIN CPC_Sales S ON C.InterCO_PO_no = S.InterCO_SO_No

これがSQL Fiddleです。

これにより、正しい数量の 4 つの行が得られます。その後、適宜削除して再挿入できます。

これらの行をテーブルに入れるには、いくつかのオプションがありますが、次のようなものが機能するはずです。

--Flag the rows for deletion
UPDATE Company_X_Sales SET Qty = -1 -- Or some arbitrary value that does not exist in the table

--Insert new correct rows
INSERT INTO Company_X_Sales 
SELECT C.InterCO_PO_no, C.Sales_Order_No, C.Part_No, S.Qty
FROM Company_X_Sales C
   JOIN CPC_Sales S ON C.InterCO_PO_no = S.InterCO_SO_No

--Cleanup flagged rows for deletion
DELETE FROM Company_X_Sales  WHERE Qty = -1

幸運を。

于 2013-01-26T19:54:40.177 に答える
0
select [PO_Number],[InterCO_SO_No], Company_X_Sales.Sales_Order_No, [Part_No],[Qty] from CPC_Sales inner join Company_X_Sales on Company_X_Sales.InterCO_PO_no = CPC_Sales.InterCO_SO_no

2 つのテーブルの単純な内部結合により、必要な結果が得られます。

于 2013-01-26T20:13:46.537 に答える