开发者社区> 问答> 正文

来自OpenQuery结果的SQL语句上的“无效列名”错误

我正在尝试通过链接的SSAS服务器执行SQL查询。初始查询工作正常:

SELECT "Ugly OLAP name" as "Value" 
FROM OpenQuery( OLAP, 'OLAP Query')

但是,如果我尝试添加:

WHERE "Value" > 0

我得到一个错误

无效的列名“值”

有什么想法我可能做错了吗?

因此,问题在于处理查询元素的顺序与编写它们的顺序不同。根据此消息来源:

http://blogs.x2line.com/al/archive/2007/06/30/3187.aspx

MSSQL中的评估顺序为:

从 上 加入 哪里 通过...分组 拥有 选择 订购 因此,别名直到WHERE和HAVING子句之后才被处理。

展开
收起
心有灵_夕 2019-12-26 22:20:28 648 0
1 条回答
写回答
取消 提交回答
  • 这应该工作:

    SELECT A.Value
    FROM (
    SELECT "Ugly OLAP name" as "Value" 
    FROM OpenQuery( OLAP, 'OLAP Query')
    ) AS a
    WHERE a.Value > 0
    
    

    不是说Value是保留字,而是因为它是列别名,而不是列名。通过使其成为嵌入式视图,“ Value”成为列名,然后可以在where子句中使用。

    2019-12-26 22:20:48
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载