You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL基于前序行更新临时表 新增列展示员工过往任职岗位

原代码错误点

  • LAG 函数取值错误:你需要取上一行的Job字段作为当前行的上一份岗位,而非取值本身为空的Job from字段
  • 分区规则错误:PARTITION BY仅需要按员工维度ID分组即可,你额外添加了Start、End字段,会导致每个分区仅包含1行数据,LAG 函数无法取到同员工上一行的任职记录
  • 排序规则冗余:已经按ID分区的前提下,ORDER BY仅保留Start升序就可以保证岗位按任职时间先后排序

修复后的代码

如果还未在临时表中新增Job from列,先执行列新增语句:

ALTER TABLE #Main ADD [Job from] VARCHAR(100);

再执行更新语句:

WITH CTE AS(
    SELECT [ID], [Job], [Start],[End], [Job from],
           LAG([Job]) OVER (PARTITION BY ID ORDER BY [Start] ASC) AS PreviousJob
    FROM #Main)
UPDATE CTE
 SET [Job from] = PreviousJob;

执行完成后查询SELECT * FROM #Main ORDER BY ID, Start即可得到你需要的预期结果。


内容的提问来源于stack exchange,提问作者8indie8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 04:54:04