尝试编写查询以使用同一表中的数据更新表。
基本上我们在这个表中有两种类型的数据,预算和预测,按客户、产品、财政年度和月份划分。
数据样本如下:
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 复制到另一种。例如,将 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'
我有这个查询正确还是我错过了什么?
谢谢。