1

当月のベンダー別の在庫金額を表示するクエリがあります。履歴データを保持するInventory_Summaryテーブルがあります。クエリで、テーブル内の最新の月のデータを更新できるようにしたいと考えていInventory_Summaryます。テーブルに入力する必要がある Inventory データを取得するためのクエリを次に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 (私はフィールドを離れDivisionましClassたが、デモには影響しません)。

于 2013-04-22T20:45:42.017 に答える