2016-11-29 48 views
0

好的,我的第一個問題在這裏。如何使用Select語句作爲T-SQL合併更新中的源代碼

我是T-SQL和MSSQL Server的新手,請耐心等待。

我一直在玩與周圍的MERGE命令一點,並用它來幫助同步數據庫中的一些表,至今它的運作良好。

我的問題是這樣的。我有一個每天都有生產數據的表格,部分數據包括正在生產的產品個別情況下的NetWeight。

我想出了一個快速選擇查詢將通過生產數據和計算的基於產品代碼盒的平均體重。

select ProductCode, AVG(NetWeight) FROM dbo.Production 
Group By ProductCode 
Order by ProductCode 

在我的ProductMaster表中,我有一個AverageWeight列。

我想要做的就是用我的選擇查詢的,我可以用我的ProductMaster表更新AverageWeight列合併命令的源。

一旦完成工作,我會將其變成一個存儲過程並計劃每天運行,以便在工廠運行新產品時自動更新ProductMaster表,並且它將保持平均案例權重處於最新狀態。

我的理解是,你可以使用一個選擇查詢爲源動力的合併,但還沒有找到它是如何工作的好例子。 感謝

+0

嗨,歡迎來到SO。我不明白你在這裏做什麼。也許共享表格結構,一些數據和期望的輸出將會有所幫助。這裏是一個開始的好地方。 http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –

回答

0

假設產品代碼是柱狀:

alter table ProductMasteradd AverageWeight number 

merge into ProductMaster t 
using(
    select 
     ProductCode 
     , AverageWeight = AVG(NetWeight) 
    from dbo.Production 
    group By ProductCode 
    order by ProductCode 
    )s 
on t.ProductCode = s.ProductCode 
when matched then update 
set t.AverageWeight = s.AverageWeight; 

注意,使用合併必須結束與語句時「;」,否則您將收到一個錯誤。

相關問題