我清楚地记得 T-SQL 永远不会让您混合使用 LAG
和 WHERE
。例如,
SELECT FOO
WHERE LAG(BAR) OVER (ORDER BY DATE) > 7
永远不会工作。无论您做什么,T-SQL 都不会运行它。但是 T-SQL 允许您将 LAG
与 HAVING
混合使用吗?
注意:答案所需要做的就是给出一个基于理论或基于文档的原因,说明它为什么不存在,或者给出任何它存在的地方的例子。
最佳答案
来自 Logical Processing Order of the SELECT statement :
The following steps show the logical processing order, or binding order, for a SELECT statement......
- FROM
- ON
- JOIN
- WHERE
- GROUP BY
- WITH CUBE or WITH ROLLUP
- HAVING
- SELECT
- DISTINCT
- ORDER BY
- TOP
窗口函数在 SELECT
级别求值,它在 HAVING
之后,所以答案是不你不能使用窗口HAVING
子句中的函数。
关于sql - LAG 可以和 HAVING 一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70999188/