提问人:GBM 提问时间:8/28/2023 最后编辑:marc_sGBM 更新时间:8/28/2023 访问量:132
SQL 滞后增量 1
SQL Lag Increment By 1
问:
我正在尝试使用 LAG 函数将 1 添加到每一行,并将“1”作为默认值。例如;
SELECT
T.NAME,
T.SESSION,
LAG (CASE WHEN T.SESSION = 2023 THEN '1' END, 1, 0) OVER (ORDER BY T.NAME) + 1 AS 'SESSION_ORDER'
FROM
TABLE T
WHERE
T.SESSION >= 2023
查询将返回 4 行,我想要的是在派生列中将第一行的默认值设置为 1,然后对于后续行,每次递增 1,以便接下来的三行;SESSION_ORDER
2
3
4
我遇到的问题是结果如下;
1
2
NULL
NULL
更新:如果有人想运行查询或类似的查询,我使用了 sqlliteonline.com 中的演示选择查询;
SELECT
id, name,
LAG (CASE WHEN name = 'CREATE' THEN 1 END, 1, 0) OVER (ORDER BY ID) + 1
FROM
demo
WHERE
NAME IN ('CREATE', 'SELECT', 'INSERT', 'UPDATE');
输出为:
1
2
NULL
NULL
答:
2赞
Joaquin
8/28/2023
#1
以下是使用以下方法修改原始查询的方法:ROW_NUMBER
SELECT
T.NAME,
T.SESSION,
ROW_NUMBER() OVER (ORDER BY T.NAME) AS 'SESSION_ORDER'
FROM TABLE T
WHERE T.SESSION >= 2023;
对于 sqlliteonline.com 上的演示查询:
SELECT
id,
name,
ROW_NUMBER() OVER (ORDER BY ID) AS 'SESSION_ORDER'
FROM demo
WHERE NAME IN ('CREATE','SELECT','INSERT','UPDATE');
这将根据指定的子句,为结果集中的每一行提供从 1 开始并递增 1 的序列。ORDER BY
评论
row_number
lag
row_number
lag