如何在更新 SQL 命令中使用 Lead

How to use Lead in Update SQL command

提问人:D.j. Black 提问时间:10/28/2023 最后编辑:marc_sD.j. Black 更新时间:10/29/2023 访问量:40

问:

这适用于:SELECT

(LEAD(AltCode,2) OVER (ORDER BY AltCode) ) from [clroot].[Material]

但不适用于 Update

USE [MEKON-EPE]

UPDATE [clroot].Material
SET String1 = (LEAD(AltCode, 2) OVER (ORDER BY AltCode))
FROM [clroot].[Material]

我收到此错误:

消息 4108,级别 15,状态 1,第 6
行 窗口化函数只能出现在 SELECT 或 ORDER BY 子句中。

我想使用接下来 2 列的值更新特定列。

Server 数据库 SQL 更新 主管

评论

2赞 Thom A 10/28/2023
你为什么要这样做?在这里存储这样的值是一个坏主意,就好像该值更改了列中的值已过期一样。您应该使用 here.VIEW
0赞 John Cappelletti 10/29/2023
Thom A 是正确的。也就是说,如果必须,您可以通过 CTE 进行更新。样本数据和期望的结果会更有帮助

答:

1赞 John Cappelletti 10/29/2023 #1

只是为了扩展我的评论

with cte as (
  Select *
        ,NewVal = LEAD(AltCode,2) OVER (ORDER BY AltCode)
 from [clroot].[Material
)
Update cte
 set String1 = NewVal