我正在尝试通过链接的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子句之后才被处理。
这应该工作:
SELECT A.Value
FROM (
SELECT "Ugly OLAP name" as "Value"
FROM OpenQuery( OLAP, 'OLAP Query')
) AS a
WHERE a.Value > 0
不是说Value是保留字,而是因为它是列别名,而不是列名。通过使其成为嵌入式视图,“ Value”成为列名,然后可以在where子句中使用。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。