我需要從下面的第一條記錄更新第二個記錄AFS_OH
列(ForecastID = 23),前一個AFS_ToProduce
值(ForecastID = 22)。換句話說,第二個記錄值爲AFS_OH = 307923
。用以前的記錄中的數據更新SQL Server表記錄字段
此外,我需要更新整個表的這些值,所以我預測ID號將根據AFS_ToProduce < 0
的標準而有所不同,因爲您會在我的WHERE
子句中注意到。
下面的腳本正在更新相同的記錄值而不是以下記錄。謝謝你的幫助!
ForecastID AFS_OH AFS_ToProduce
22 307923 -307923
23 0 316602
這裏是我的方法:
UPDATE FC_Test
SET AFS_OH = (AFS_ToProduce * (-1))
FROM FC_Test S3
INNER JOIN
(
SELECT S1.FORECASTID, S2.AFS_ToProduce AS AFS_OH
FROM FC_Test S1
LEFT OUTER JOIN
(
SELECT *
FROM FC_Test
) S2
ON S1.ForecastID = S2.ForecastID
)S4 ON S3.ForecastID = S4.ForecastID
WHERE AFS_ToProduce < 0
您使用的是什麼sql-server版本? – Arion
SQL Server 2008 –
您能澄清AFS_ToProduce <0的影響嗎?是否有想法找到最接近的前一行並將當前行的「AFS_ToProduce」值設爲負值,並將該絕對值用於「AFS_OH」值? – Thomas