2013-11-26 59 views
2

我在SQL Server 2008 R2中工作。我有一個表格,它將成爲我的SSRS報告的主要活動表格。我需要使用另一個表中的信息來更新表格,該表格由重複性作業創建,該表格查詢我的ERP數據庫並收集特定記錄。我需要用另一個表中的五個字段來更新主表,而不會干擾現有的數據。使用存儲過程從另一個表更新表

主表中有14個領域,從ERP表中有6中常見的有: 招聘# 作業名 參考 頁面 截止日期 客戶

如果作業#在主表我存在想轉移到下一個記錄。我打算做一個存儲過程,每次都會通過記錄。我在Excel中完成了這項工作,但沒有在SQL中完成。另外從最佳實踐的角度來看,我最好是將ERP數據庫的查詢和此更新放在單個存儲過程中,還是創建一個新的並創建一個連續運行它的作業?

回答

5

SQL是基於設置的,所以你應該盡力避免任何逐行邏輯。沒有你的模式,我只是猜測,但... ...

UPDATE main 
set Field1 = other.Field1, 
    Field2 = other.Field2, 
    Field3 = other.Field3 
from MainTable main 
INNER JOIN ERP other 
ON main.[Job#] = other.[Job#] 
and main.JobName = other.JobName 
and main.Reference = other.Reference 
and main.Pages = other.Pages 
and main.[Due Date] = other.[Due Date] 
and main.Customer = other.Customer 
+0

我想他說他想跳過匹配的工作號碼。如果是這樣,失去第一個JOIN語句,並在最後添加「WHERE NOT EXISTS(SELECT 1 FROM main WHERE [JOB#] = other。[JOB#])」到最後。 –

+0

這裏是我最終使用:\t合併DashMaster一個 \t使用DashActiveJobs B關於a.Activity \t = b.Ref \t時沒有目標,然後 \t插入(活動,作業名,jobnumber可以頁) \t匹配值(b.Ref,b.JobName,b.JobNumber,b.Pages); –

相關問題