在我们的组织中,我们有一个中央采购公司(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件商品的最终销售是由来自中央公司的1个以上外部采购订单的部件组成的。
我需要做的是复制Company_X_Sales
中的行,包括原始采购订单编号,并将数量设置为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
只是作为查找来获取原始采购订单编号。
希望你能帮助我在周末工作,因为这是一项工作时间非常激进的工作的一部分。
我不介意解决方案是否需要多次传递表或根据需要创建视图。我真的很挣扎。
答案 0 :(得分:0)
我对你的问题感到有些困惑,但听起来你正试图让你的Company_X_Sales表有3行而不是1行,只是数量不一?如果是这样,这样的事情应该有效:
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
祝你好运。
答案 1 :(得分: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
两个表上的简单内连接将为您提供所需的结果IMHO。