1

我有一个查询,提供当月供应商的库存美元。我有一个Inventory_Summary保存历史数据的表。我希望查询能够更新Inventory_Summary表中最新月份的数据。这是用于提取需要进入Inventory_Summary表的库存数据的查询。

SELECT 
    Vendor,
    SUM(Cost*QOH) AS InvDlr
FROM
    dbo.Inventory
WHERE
    Division NOT IN ('9999')
AND
    Class NOT IN ('5500')
AND
    Vendor IN ('AA','BB','CC','DD','EE')
GROUP BY
    Vendor

我需要这个结果集进入的表结构如下:

Inventory_Summary

Vendor
Vendor_Name
MonthNum
Year
InvDlr 

如何每天更新当月的最新数据?

4

1 回答 1

1

从一张UPDATE桌子到另一张桌子相当简单,使用以下模式UPDATE Table SET fields FROM Joined Tables

UPDATE S
SET S.InvDlr = I.InvDlr
FROM (SELECT 
          Vendor,
          SUM(Cost*QOH) AS InvDlr
      FROM
          dbo.Inventory
      WHERE
          Division NOT IN ('9999')
      AND
          Class NOT IN ('5500')
      AND
          Vendor IN ('AA','BB','CC','DD','EE')
      GROUP BY
          Vendor) I
JOIN Inventory_Summary S on I.Vendor = S.Vendor
WHERE S.MonthNum = MONTH(GETDATE())
  AND S.Year = YEAR(GETDATE())

在此示例中,我只是删除了SELECT您在子查询中提供的内容,并为其赋予了别名I. 然后这Inventory_SummaryVendor字段连接。最后,将该InvDlr字段设置为子查询中的金额。此外,该Inventory_Summary表仅针对当前月份和年份进行过滤。

演示:http ://www.sqlfiddle.com/#!3/2e663/ 1(我离开DivisionClass字段,但这不应该影响演示)。

于 2013-04-22T20:45:42.017 回答