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

将T-SQL重构为Databricks SQL时子查询rn字段解析失败求助

问题解决:Databricks SQL无法解析子查询中的rn字段

原T-SQL语句在SQL Server中执行正常,但在Databricks SQL中报错AnalysisException: cannot resolve 'rn',核心原因是Databricks SQL遵循标准SQL语法,不支持SQL Server特有的列名=表达式的别名定义方式。

原错误SQL:

SELECT * 
FROM
(select 
    rn = ROW_NUMBER() OVER (PARTITION BY ID order by ID),
*
    from db.myview c
) c
where c.rn = 1

修改后的正确SQL:

SELECT * 
FROM
(select 
    ROW_NUMBER() OVER (PARTITION BY ID order by ID) AS rn,
    *
    from db.myview c
) c
where c.rn = 1

关键说明

  • Databricks SQL(基于Spark SQL)要求使用AS 列名的标准语法定义列别名,不支持列名=表达式这种非标准写法。
  • 调整别名定义方式后,子查询中的rn字段就能被正常识别,过滤条件c.rn = 1也可以正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:52:02