1

同じテーブルのデータでテーブルを更新するクエリを作成しようとしています。

基本的に、このテーブルには予算と予測の 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'

このクエリは正しいですか、それとも何か不足していますか?

ありがとう。

4

1 に答える 1