同じテーブルのデータでテーブルを更新するクエリを作成しようとしています。
基本的に、このテーブルには予算と予測の 2 種類のデータがあり、顧客、製品、会計年度、月ごとに分割されています。
データのサンプルは次のようになります。
CustomerCosts
CustomerNo Product FiscalYear Month DataType DataField Q R G
CU01 REG 2014 1 Budget Commission 10 2 20
CU01 REG 2014 1 Budget Warehouse 5 5 25
CU01 REG 2014 2 Budget Commission 30 1 30
CU01 REG 2014 2 Budget Warehouse 12 2 24
CU01 REG 2014 1 Forecast Commission 10 2 20
CU01 REG 2014 1 Forecast Warehouse 5 5 25
CU01 REG 2014 2 Forecast Commission 30 1 30
CU01 REG 2014 2 Forecast Warehouse 12 2 24
基本的に、ユーザーはある DataType から別の DataType にコピーしたいと思うでしょう。たとえば、2014 年予算を 2014 年予測にコピーします。
私はこのクエリを思いつきましたが、動作しているように見えますが、更新された行の数は、本来よりも多くの行が更新されていることを示しています。
UPDATE CustomerCosts
SET CustomerCosts.Q = f.Q,
CustomerCosts.R = f.R,
CustomerCosts.G = f.G
FROM CustomerCosts
JOIN CustomerCosts f
ON CustomerCosts.CustomerNo = f.CustomerNo AND
CustomerCosts.Product = f.Product AND
CustomerCosts.Month = f.Month AND
CustomerCosts.DataField = f.DataField
WHERE CustomerCosts.FiscalYear = 2014 AND
CustomerCosts.DataType = N'Forecast' AND
f.FiscalYear = 2014 AND
f.DataType = N'Budget'
このクエリは正しいですか、それとも何か不足していますか?
ありがとう。