sql - LAG 可以和 HAVING 一起使用吗?

标签 sql sql-server tsql lag having

我清楚地记得 T-SQL 永远不会让您混合使用 LAGWHERE。例如,

SELECT FOO
WHERE LAG(BAR) OVER (ORDER BY DATE) > 7

永远不会工作。无论您做什么,T-SQL 都不会运行它。但是 T-SQL 允许您将 LAGHAVING 混合使用吗?

注意:答案所需要做的就是给出一个基于理论或基于文档的原因,说明它为什么不存在,或者给出任何它存在的地方的例子。

最佳答案

来自 Logical Processing Order of the SELECT statement :

The following steps show the logical processing order, or binding order, for a SELECT statement......

  1. FROM
  2. ON
  3. JOIN
  4. WHERE
  5. GROUP BY
  6. WITH CUBE or WITH ROLLUP
  7. HAVING
  8. SELECT
  9. DISTINCT
  10. ORDER BY
  11. TOP

窗口函数在 SELECT 级别求值,它在 HAVING 之后,所以答案是你不能使用窗口HAVING 子句中的函数。

关于sql - LAG 可以和 HAVING 一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70999188/

相关文章:

sql - SSRS - Group_Concat 等效于使用表达式吗?

sql-server - T-SQL 确定性 INT 转换

html - sql 从存储的 html 中提取所有 img src 标签

mysql - 从另一个表和不同的数据库更新表

sql - 更改现有的标识列增量值

sql-server - Oracle 和 SQL Server select (+) 等效

c# - sql server 2008最大数据库数

sql - 存储过程返回特定间隔的记录

SQL - 日期查询问题 - varchar 到日期时间的转换导致值超出范围

mysql - EXCEPT 命令 - 查找预订了所有船只的水手