将滞后函数结果插入表中

时间:2018-08-24 15:36:58

标签: sql sql-server

我最近了解了sql中的LAG和LEAD函数...据我所知,这些函数创建了自定义列以显示结果,但结果将不会保存。 您能帮我如何将LAG结果保存到数据表sql数据库中吗?...

1 个答案:

答案 0 :(得分:1)

一个例子。它将使用先前的值更新prev字段:

DECLARE @t TABLE
(
    id   int,
    val  int,
    prev int
);
INSERT INTO @t VALUES
(1, 100, NULL),
(2, 200, NULL),
(3, 300, NULL),
(4, 400, NULL),
(5, 500, NULL),
(6, 600, NULL);

UPDATE @t
SET prev = z.xprev
FROM
(
    SELECT *,
    LAG(val, 1, NULL) OVER (ORDER BY id) xprev
    FROM @t
) z
INNER JOIN @t w ON w.id = z.id;