Не уверен, что именно вы ищете, но вот начало ниже.К вашему сведению - ваше условие для Cost_Prior_Recompute требует значения по умолчанию / else - я просто поставил '?'пока там, так как я не могу сказать, что это должно быть.
Кроме того - я не могу сказать, является ли freigntCostTotal фактически полем в вашей базе данных, которое вы пытаетесь обновить, или если выпланируйте просто вычислять его на основе других полей каждый раз.Пока что я предполагаю, что вы просто собираетесь его вычислить.
Так что вы бы выбрали это - имея в виду (я полагаю, прочитав ваш код), вы ищете данные, где frieghtCostTotalеще не был обновлен в базе данных.
SELECT
1 as freightCount,
CASE WHEN freightCostDefinedTotal <> 0
THEN FixedFreight
ELSE ISNULL(Cost_Prior_ReCompute,?) * freight_perc_
END as freigntCostTotal,
Cost_Prior_ReCompute,
freight_perc_,
FixedFreight
FROM
VF_CasINV_Cost
WHERE
freightCostTotal = 0
В качестве альтернативы, вы можете просто вытащить данные, как это, но они получат все данные, а не только данные freightCostTotal = 0.
SELECT
1 as freightCount,
freigntCostTotal,
Cost_Prior_ReCompute,
freight_perc_,
FixedFreight
FROM
VF_CasINV_Cost
Вот как бы вы обновились.Кстати, если вы новичок в обновлении с помощью SQL, я настоятельно рекомендую вам сначала проверить это на некоторых непроизводственных данных.Или, по крайней мере, сначала сделайте резервную копию своего стола.
UPDATE VF_CasINV_Cost
SET freightCostTotal = CASE WHEN freightCostDefinedTotal <> 0
THEN FixedFreight
ELSE ISNULL(Cost_Prior_ReCompute,?) * freight_perc_
END
WHERE freightCostTotal = 0