在输出子句后面包含一个select语句

时间:2013-10-03 23:53:09

标签: sql tsql

在输出语句后面包含一个select语句将CostYTD设置为Sales Territory表上的地区1-4的$ 1000.00。提供输出语句,显示区域ID,新成本YTD和旧成本YTD,如下所示

TerritoryID     New Cost YTD     Old Cost YTD
------------    ------------     ------------

1               1000.00          0.00

这是我的代码:

USE AdventureWorks2008R2;
UPDATE sales.SalesTerritory
SET CostYTD = 1000.00 
OUTPUT inserted.TerritoryID, deleted.CostYTD, inserted.CostYTD
WHERE TerritoryID=1 and TerritoryID=2 and TerritoryID=3 and TerritoryID=4

然而,当我添加select语句时,它告诉我列名称不是有效的。我不知道该怎么做。另外我知道CostYTD也需要知道新的成本YTD和旧的所以我这样做吗? inserted.CostYTD =新成本YTD?

1 个答案:

答案 0 :(得分:0)

我希望我能解决您的问题:您希望从OUTPUT子句中获取信息,例如'deleted.field'或'inserted.field',以便进一步使用它。好吧,这是一个尝试(没有经过测试):OUTPUT必须放入一个表,你必须首先创建这样的语句

DECLARE @outputtab TABLE(inserted_TerritoryID bigint,deleted_CostYTD money,inserted_CostYTD money)

(确保数据类型匹配)。在语句中,您可以像这样填写表变量

OUTPUT inserted.TerritoryID,deleted.CostYTD,inserted.CostYTD INTO @outputtab 

(OUTPUT中的字段顺序必须与@outputtab的字段顺序相匹配)。之后,您可以查询该表变量。您还可以构建一个临时表或普通表。