我在SQL Server 2008 R2中工作。我有一张桌子,它将成为我SSRS报告的主要活动表。我需要使用另一个表中的信息更新表,该表由查询我的ERP数据库并收集特定记录的定期作业创建。我需要使用另一个表中的五个字段更新主表,而不会干扰现有数据。
主表有14个字段,ERP表有6个。共同点是: 工作# 作业名 参考 网页 截止日期 客户
如果主表中存在作业#,我想转到下一条记录。我打算做一个可以一次查看记录的存储过程。我在Excel中完成了这个,但在SQL中没有。另外从最佳实践的角度来看,我最好将ERP数据库的查询和此更新放在单个存储过程中,还是创建一个新的并创建一个连续运行它们的作业?
答案 0 :(得分: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