0

出力ステートメントの後に select ステートメントを含めます。Sales Territory テーブルのテリトリー 1 ~ 4 の CostYTD を $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

ただし、選択ステートメントを追加すると、列名が無効であることがわかります。どうすればいいのかわからない。また、CostYTD は、New cost YTD および old としても認識される必要があることを知っているので、これを行いますか? insert.CostYTD = 新しいコスト YTD?

4

1 に答える 1

0

問題が解決することを願っています。処理された各行の 'deleted.field' や 'inserted.field' などの OUTPUT 句から情報を取得して、それをさらに使用したいと考えています。さて、ここで試してみます(何もテストされていません):OUTPUTは、ステートメントの前に最初に作成する必要があるテーブルに配置する必要があります

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

(データ型が一致していることを確認してください)。ステートメント内で、そのテーブル変数を次のように入力できます

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

(OUTPUT のフィールドの順序は、@outputtab の順序と一致する必要があります)。その後、そのテーブル変数をクエリできます。temptable または通常のテーブルを作成することもできます。

于 2013-10-04T02:41:37.227 に答える