在 SQL Server 2000 中是否类似于 LAG() 或 LEAD()

Is anything like LAG() or LEAD() in SQL Server 2000

我想获取当前行的下一行值。就像 LEAD() 在最新的 SQL 服务器中所做的一样。但我目前正在使用 SQL Server 2000。而且我没有任何其他选择。

实际情况是:

表格规则:

#   HeadNo | NextHeadNo |     NoFrom
-----------+------------+------------
1    AA    |    AB      |        1
2    AB    |    AC      |        1
3    AC    |    AX      |        1
4    AD    |    AE      |        1   ****and so on

我想根据 HeadNo 上的下一个值更新 NextHeadNo 值。

所以根据数据 Row-3 应该得到更新 AX ➪ AD

我单次更新大约 1000 条记录。

我希望任何人都可以帮助我。

您可以尝试使用子查询。

SELECT *, 
       (SELECT TOP 1 headno 
        FROM   @table T2 
        WHERE  T2.headno > T1.headno 
        ORDER  BY headno) NextHeadNo 
FROM   @table T1 
ORDER  BY headno 

Online Demo

要更新,您可以尝试以下方法。

UPDATE T1 SET NextHeadNo= 
       (SELECT TOP 1 headno 
        FROM   @table T2 
        WHERE  T2.headno > T1.headno 
        ORDER  BY headno)  
FROM   @table T1

编辑:

but in last row getting NULL, So i want to give its reference to first row. how can i do that?

我建议你写一个单独的更新语句,而不是像下面这样写 CASE WHEN

update t
set t.NextHeadNo =
 (
  select top 1 HeadNo from @table order by HeadNo
 )
from @table t
where t.NextHeadNo is null