You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL报错:Unrecognized name: year at [6:7] 求解决方法

解决BigQuery中"Unrecognized name: year"报错问题

这个报错的核心原因是SQL的执行顺序:WHERE子句的执行优先级早于SELECT子句。你在SELECT里定义的别名year,在WHERE阶段还未被创建,所以数据库无法识别这个名称。

以下是两种可行的解决方法:

方案1:在WHERE子句中重复年份提取逻辑

直接在WHERE里使用EXTRACT(YEAR FROM starttime)过滤年份,这是最简洁的写法:

SELECT
    EXTRACT(YEAR FROM starttime) AS year,
    COUNT(*) AS number_of_rides
FROM
    bigquery-public-data.new_york.citibike_trips 
WHERE
    EXTRACT(YEAR FROM starttime) IN (2013, 2014)
GROUP BY
    year
ORDER BY
    year DESC

方案2:使用CTE预处理数据

如果后续有更复杂的逻辑,用CTE先提取年份再处理,可读性更好:

WITH trips_with_year AS (
    SELECT
        EXTRACT(YEAR FROM starttime) AS year
    FROM
        bigquery-public-data.new_york.citibike_trips
)
SELECT
    year,
    COUNT(*) AS number_of_rides
FROM
    trips_with_year
WHERE
    year IN (2013, 2014)
GROUP BY
    year
ORDER BY
    year DESC

两种方案都能正确返回2013、2014年的骑行数据,BigQuery对这两种写法的性能优化差异不大,可根据实际需求选择。

内容的提问来源于stack exchange,提问作者Amirul Fakhruddin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 09:12:04