在 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
要更新,您可以尝试以下方法。
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
我想获取当前行的下一行值。就像 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
要更新,您可以尝试以下方法。
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