繁体   English   中英

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

[英]SQL-how to bring the value of first row to the second row

我有一个具有以下值的表:

week_no     amt   amt_diff
1           500    100
2           600    300
3           900    100
4          1000   null

当我减去week2.amt-week1.amt ,差异将保存在week_no=1amt_diff列中。 但是我希望结果与week_no=2记录一起存储。

谁能帮助我使用SQL?

我认为这应该有效。 您可以先将其设为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)
 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;

可能会为您工作。

update k
set k.amt_diff=(select k2.amt from week k2 where week_no=k.week_no+1)-amt
from week k

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM