我有一个有两列的表; MovingAverage和基线已经填充。我想添加一个满足特定条件时将根据以前的计算值进行更新的计算列。我看过有关此的各种帖子,但是它们似乎并没有满足我的需求。
条件是:
if the current row moving average is >=1.13 * NewBaseline
then 1.15*Newbaseline
else Newbaseline
表格:
答案 0 :(得分:0)
您需要类似的东西:
IF移动平均值> =(1.13 * NewBaseline) 1.15 * Newbaseline; 其他 新基线;
告诉我您是否正在寻找这样的东西。
答案 1 :(得分:0)
;WITH CTE AS
(
SELECT m, MovAvg, BaseLine, BaseLine AS NewBaseline
FROM MyTable
WHERE m = 1
UNION ALL
SELECT t1.m, t1.MovAvg, t1.BaseLine,
CAST(CASE WHEN t1.MovAvg >= 1.13 * t2.NewBaseline THEN 1.15 * t2.NewBaseline ELSE t2.NewBaseline END AS decimal(10,2)) AS NewBaseline
FROM MyTable t1 INNER JOIN CTE t2 ON t1.m = t2.m + 1
)
UPDATE t1
SET NewBaseline = t2.NewBaseline
FROM MyTable t1 INNER JOIN CTE t2 ON t1.m = t2.m