[英]“Invalid column name” error on SQL statement from OpenQuery results
我正在尝试通过链接的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子句之后才会处理别名。
这应该工作:
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
我可以保证将它从GROUP BY中删除。 好消息是,它可以很好地成为一个简单的旧选择别名。
哦,真可惜。 我刚刚看到,你选择AS FOO。 在这种情况下你不需要HAVING克劳斯吗?
SELECT whatever AS value FROM table HAVING value > 1;
我仍然不会使用“价值”。 但是可以肯定的是,在你的文档中查找它!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.