当前位置:  开发笔记 > 数据库 > 正文

来自OpenQuery结果的SQL语句中的"无效的列名"错误

如何解决《来自OpenQuery结果的SQL语句中的"无效的列名"错误》经验,为你挑选了2个好方法。

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

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

但是,如果我尝试添加:

WHERE "Value" > 0

我收到一个错误

列名称'Value'无效

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


所以问题在于处理查询元素的顺序与它们的编写顺序不同.根据这个消息来源:

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

MSSQL中的评估顺序是:

    加入

    哪里

    通过...分组

    HAVING

    选择

    订购

因此,在WHERE和HAVING子句之后才会处理别名.



1> Chris Miller..:

这应该工作:

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

并不是Value是一个保留字,问题是它是列别名,而不是列名.通过使其成为内联视图,"Value"成为列名,然后可以在where子句中使用.



2> Andrew..:

您使用"Value"作为列别名,我不认为别名可以出现在where子句中.它只是用于命名返回的列值.您的where子句应该引用原始列名:

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

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有