我正在尝试通过链接的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中的评估顺序是:
因此,在WHERE和HAVING子句之后才会处理别名.
Chr*_*ler 17
这应该工作:
SELECT A.Value
FROM (
SELECT "Ugly OLAP name" as "Value" 
FROM OpenQuery( OLAP, 'OLAP Query')
) AS a
WHERE a.Value > 0
并不是Value是一个保留字,问题是它是列别名,而不是列名.通过使其成为内联视图,"Value"成为列名,然后可以在where子句中使用.
您使用"Value"作为列别名,我不认为别名可以出现在where子句中.它只是用于命名返回的列值.您的where子句应该引用原始列名:
SELECT "Ugly OLAP name" as "Value" 
FROM OpenQuery( OLAP, 'OLAP Query')
WHERE "Ugly OLAP name" > 0
| 归档时间: | 
 | 
| 查看次数: | 81017 次 | 
| 最近记录: |