代码之家  ›  专栏  ›  技术社区  ›  Patterson

将T-SQL重构为Databricks SQL以从子查询返回结果

  •  0
  • Patterson  · 技术社区  · 1 年前

    我有以下T-SQL,当我尝试使用Databricks SQL执行时,我会得到错误

    SQL语句中出错:AnalysisException:无法解析“” rn '

    我有一个名为 db.myview 并且Databricks SQL似乎无法执行的子查询 rn (至少我是这么想的)

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

    当我在SQL Server中执行上述查询时,我没有问题。

    1 回复  |  直到 1 年前
        1
  •  1
  •   David Browne - Microsoft    1 年前

    Spark SQL要求列别名位于列表达式之后。

    命名表达式

    具有指定名称的表达式。通常,它表示一列 表示

    语法:expression[[AS]alias]

    https://spark.apache.org/docs/latest/sql-ref-syntax-qry-select.html

    所以

    SELECT * 
    FROM
    (
        select ROW_NUMBER() OVER (PARTITION BY C_NAME order by C_CUSTKEY) as rn, *
        from CUSTOMER c
    ) c
    where c.rn = 1