我有一个包含以下值的表:
week_no amt amt_diff
1 500 100
2 600 300
3 900 100
4 1000 null
当我减去week2.amt-week1.amt
时,差异将保存在amt_diff
的{{1}}列中。但我希望结果与week_no=1
记录一起存储。
任何人都可以帮我解决SQL吗?
答案 0 :(得分:1)
我认为这应该有效。您可以先将其设为SELECT
,以确保获得所需的结果。语法在SQL Server中有效,不确定其他RDBMS。
UPDATE m2
SET amt_diff = (m2.amt-m1.amt)
FROM MyTable m2
INNER JOIN MyTable m1
ON m1.week_no = (M2.week_no - 1)
它将更新计算后一周内的所有记录。
只需选择值:
SELECT amt_diff = (m2.amt-m1.amt)
FROM MyTable m2
INNER JOIN MyTable m1
ON m1.week_no = (M2.week_no - 1)
答案 1 :(得分:0)
UPDATE YOURTABLE T
SET T.AMT_DIFF = ( T.AMT - NVL(( SELECT TT.AMT
FROM YOURTABLE TT
WHERE TT.WEEK_NO = (T.WEEK_NO - 1)
)
,0)
)
WHERE T.WEEK_NO = 2;
可能会为你工作。
答案 2 :(得分:0)
update k
set k.amt_diff=(select k2.amt from week k2 where week_no=k.week_no+1)-amt
from week k