我正在尝试通过链接的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子句中使用。