【问题标题】:How do I use a Select Statement as the Source in a T-SQL Merge Update如何在 T-SQL 合并更新中使用 Select 语句作为源
【发布时间】:2016-11-29 20:02:49
【问题描述】:

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

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

我一直在玩弄 MERGE 命令,并用它来帮助同步数据库中的一些表,到目前为止它运行良好。

我的问题是这个。我有一个表格,每天都有生产数据,其中部分数据包括正在生产的各个案例的 NetWeight。

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

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

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

我想要做的是使用我的选择查询作为合并命令的源,我可以使用它来更新我的 ProductMaster 表中的 AverageWeight 列。

一旦工作,我会将它变成一个存储过程并安排它每天运行,这样当新产品在工厂运行时,ProductMaster 表会自动更新,它会保持平均箱重最新。

我的理解是您可以使用 Select Query 作为 Merge 的来源,但还没有找到很好的例子来说明它是如何工作的。 谢谢

【问题讨论】:

  • 您好,欢迎来到 SO。我不明白你想在这里做什么。也许共享表结构、一些数据和所需的输出会有所帮助。这是一个很好的起点。 spaghettidba.com/2015/04/24/…

标签: sql-server tsql merge


【解决方案1】:

假设 ProductCode 是类似的列:

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;

注意,使用合并时,语句必须以“;”结束,否则会收到错误消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 2012-12-05
    • 2011-08-25
    • 2010-11-06
    • 2010-11-24
    相关资源
    最近更新 更多