私は2つのアプローチを思いつきましたが、どちらが速いのか分かりません。
あなたの計算が複雑ではないので、あなただけの数学行うことができます。のMySqlアプローチで
UPDATE FieldTable SET
value2 = value1 + value2
value3 = value1 + 2*value2 + value3
value4 = 2*value1 + 4*value2 + 2*value3
NextYearValue = 4*value1 + 7*value2 + 3*value3
PreviousYearValue = NextYearValue
を、あなただけの変数を使用することができます。
というあなた、もちろん考慮
UPDATE FieldTable
JOIN
(
SELECT
id,
@uvalue2 :=value2 + value3 uvalue2,
@uvalue3 :[email protected] + value3 uvalue3,
@uvalue4 :[email protected] + @uvalue3 uvalue4,
@uvalue2 + @uvalue3 + @uvalue4 uNextYearValue,
NextYearValue uPreviousYearValue
FROM FieldTable
) as uFieldTable
ON FieldTable.id = uFieldTable.id
SET
value2 = uvalue2,
value3 = uvalue3,
value4 = uvalue4,
NextYearValue = uNextYearValue,
PreviousYearValue = uPreviousYearValue;
ユニークなIDを持つSQL Serverので
あなたはおそらくCommon Table Expressions
WITH FieldTable2 AS(
SELECT id, value2 + value3 value2, value3, value4, NextYearValue FROM FieldTable
) ,FieldTable3 AS(
SELECT id, value2, value3 + value2 value3, value4, NextYearValue FROM FieldTable2
) ,FieldTable4 AS(
SELECT id, value2, value3, value3 + value2 value4, NextYearValue FROM FieldTable3
) ,FieldTable5 AS(
SELECT id, value2, value3, value4, value2 + value3 + value4 NextYearValue FROM FieldTable4
)
UPDATE FieldTable
SET
value2 = FieldTable5.value2,
value3 = FieldTable5.value3,
value4 = FieldTable5.value4,
NextYearValue = FieldTable5.NextYearValue
FROM
FieldTable5
WHERE FieldTable.id = FieldTable5.id
を使用する必要があるため、物事は私が何をしたいことは、あなたが提供した例よりも複雑であると思われる、より複雑な取得します。より具体的になりますか? – xpy
優秀..あなたは正しく推測しました。私は更新します。待ってください。 –
質問が更新されました。それを見てください。 –