Sql server 如何在T-SQL合并更新中使用Select语句作为源

Sql server 如何在T-SQL合并更新中使用Select语句作为源,sql-server,tsql,merge,Sql Server,Tsql,Merge,好的,我的第一个问题在这里 我是T-SQL和MSSQL服务器的新手,所以请耐心等待 我一直在使用MERGE命令,并使用它来帮助同步数据库中的一些表,到目前为止,它工作得很好 我的问题是。我有一个每天都有生产数据的表格,其中一部分数据包括正在生产的个别产品的净重 我想出了一个快速选择查询,它将遍历生产数据,并根据产品代码计算箱子的平均重量 select ProductCode, AVG(NetWeight) FROM dbo.Production Group By ProductCode Orde

好的,我的第一个问题在这里

我是T-SQL和MSSQL服务器的新手,所以请耐心等待

我一直在使用MERGE命令,并使用它来帮助同步数据库中的一些表,到目前为止,它工作得很好

我的问题是。我有一个每天都有生产数据的表格,其中一部分数据包括正在生产的个别产品的净重

我想出了一个快速选择查询,它将遍历生产数据,并根据产品代码计算箱子的平均重量

select ProductCode, AVG(NetWeight) FROM dbo.Production
Group By ProductCode
Order by ProductCode
在我的ProductMaster表中,我有一列是AverageWeight

我要做的是使用Select查询作为合并命令的源,我可以使用该命令更新ProductMaster表中的AverageWeight列

一旦开始工作,我会将其转换为一个存储过程,并将其安排为每天运行,这样当新产品在工厂中运行时,ProductMaster表会自动更新,并且它会使平均案例权重保持最新

我的理解是,您可以使用Select查询作为合并的源,但还没有找到它如何工作的好例子。
谢谢

假设ProductCode是like列:

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;

注意,使用merge时,必须以“;”结束语句,否则将收到错误

大家好,欢迎来到SO。我不明白你在这里想干什么。也许共享表结构、一些数据和所需的输出会有所帮助。这是一个很好的起点。