更新表中的单个列

时间:2013-04-22 19:03:59

标签: tsql

我按供应商按月列出了库存美元表。我希望能够每天更新当月的美元金额,但我不想丢失上个月的数据。这是我的基本查询:

DELETE Inventory_Dollars 
FROM Inventory_Summary
WHERE MonthNum = '4'

SELECT
SUM(Cost*OnHand) AS Inventory_Dollars
FROM Inventory

Inventory表将始终保存当前数据。如何从Select语句中插入Inventory_Summary数据?

2 个答案:

答案 0 :(得分:0)

使用INSERT前缀查询:

INSERT INTO Inventory_Summary
            (Inventory_Dollars)
SELECT SUM(Cost * OnHand) AS Inventory_Dollars
FROM   Inventory 

答案 1 :(得分:0)

如果您已经插入了当月的inventory_dollars金额,那么您可以每天使用以下内容更新该值:

UPDATE Inventory_Summary
SET Inventory_Dollars = (
    SELECT (Cost * OnHand)
    FROM Inventory
)
WHERE MonthNum = DATEPART(m, GETDATE()) AND Year = DATEPART(year, GETDATE())

DATEPART可用于填写当前日期的月份数GETDATE()。那么您将不会更新过去几个月的inventory_dollars值。

编辑:还在where子句中添加了一年,因此您不会更新过去几年的月份。

编辑2:如果在SET中使用子查询,请确保只能返回一个结果。