簡體   English   中英

如何從單行創建多行(SQL Server 2008)

[英]How can I create multiple rows from a single row (sql server 2008)

在我們的組織中,我們有一個中央采購公司(CPC),然后通過公司間采購訂單將其出售給我們的零售公司(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個以上外部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編號的查找。

希望您能幫我整個周末工作,因為這是一項工作量很大的工作的一部分。

我不介意該解決方案是否需要多次通過表格或根據需要創建視圖。 我真的很掙扎。

您的問題讓我有些困惑,但是聽起來您正在嘗試使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

祝好運。

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

在兩個表上進行簡單的內部聯接將為您提供所需的結果恕我直言。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM