首页 > 解决方案 > BigQuery 选择语句别名在 where 子句中不起作用

问题描述

我尝试了下面的查询,但它抛出错误 RANK 未定义。

SELECT
    EmailAddress
  , FirstName
  , LastName
  , RANK() OVER (ORDER BY BookingDate) AS RANK FROM `table_name`
WHERE RANK BETWEEN 5 AND 7

标签: google-bigquery

解决方案


以下是 BigQuery 标准 SQL

WHERE 子句在查询输出形成并分配别名之前进行评估,这意味着该字段rankWHERE rank BETWEEN 5 AND 7.

你只需要在下面使用

#standardSQL
SELECT * FROM (
  SELECT
      EmailAddress
    , FirstName
    , LastName
    , RANK() OVER (ORDER BY BookingDate) AS rank 
  FROM `project.dataset.table`
)
WHERE rank BETWEEN 5 AND 7 

推荐阅读