SQL-如何将第一行的值带到第二行

时间:2012-02-22 12:52:27

标签: sql

我有一个包含以下值的表:

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吗?

3 个答案:

答案 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