小编84R*_*73R的帖子

T-SQL CTE 比较前一个非空行和当前行以按差值过滤掉

我的示例数据库(实际上是 CTE 语句数据)如下所示:

eventdate   val
2012-03-23  3965
2012-03-26  3979
2012-03-27  3974
2012-03-28  3965
2012-03-29  3967
2012-03-30  3959
2012-04-02  3951
2012-04-03  3961
2012-04-04  3944
2012-04-05  3935
2012-04-09  3901
2012-04-10  3822
Run Code Online (Sandbox Code Playgroud)

我想删除差异小于 12 的值。这是我的查询和输出:

SELECT
eventdate,
CASE
WHEN ABS(val - LAG(val) OVER (ORDER BY eventdate)) <= 12
THEN NULL
ELSE val
END AS val
FROM tbl_1
ORDER BY eventdate
Run Code Online (Sandbox Code Playgroud)

输出:

eventdate   val
2012-03-23  3965
2012-03-26  3979
2012-03-27  NULL
2012-03-28  NULL
2012-03-29  NULL
2012-03-30  NULL
2012-04-02  NULL
2012-04-03  NULL
2012-04-04  3944
2012-04-05  NULL …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql cursors recursive

2
推荐指数
1
解决办法
2520
查看次数

标签 统计

cursors ×1

recursive ×1

sql-server ×1

t-sql ×1