关于sql server:OpenQuery结果中的SQL语句出现” Invalid column name”错误

关于sql server:OpenQuery结果中的SQL语句出现” Invalid column name”错误

“Invalid column name” error on SQL statement from OpenQuery results

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

1
2
SELECT"Ugly OLAP name" AS"Value"
FROM OpenQuery( OLAP, 'OLAP Query')

但是,如果我尝试添加:

1
WHERE"Value"> 0

我得到一个错误

Invalid column name 'Value'

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

所以问题是查询元素的处理顺序与它们的写入顺序不同。根据此来源:

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

MSSQL中的评估顺序为:

  • 加入
  • 哪里
  • 通过...分组
  • 拥有
  • 选择
  • 订购
  • 因此直到WHERE和HAVING子句之后才处理别名。


    这应该起作用:

    1
    2
    3
    4
    5
    6
    SELECT A.Value
    FROM (
    SELECT"Ugly OLAP name" AS"Value"
    FROM OpenQuery( OLAP, 'OLAP Query')
    ) AS a
    WHERE a.Value > 0

    不是说Value是保留字,而是因为它是列别名,而不是列名。通过使其成为嵌入式视图," Value"成为列名,然后可以在where子句中使用。


    您使用"值"作为列别名,但我认为别名不能出现在where子句中。它仅用于命名返回的列值。您的where子句应引用原始列名:

    1
    2
    3
    SELECT"Ugly OLAP name" AS"Value"
    FROM OpenQuery( OLAP, 'OLAP Query')
    WHERE"Ugly OLAP name"> 0

    我可以保证不将其保留在GROUP BY中。好消息是,它是普通的旧选定别名,效果很好。


    哦,真可恶。我刚刚看到,您选择AS FOO。在这种情况下,您不需要HAVING子句吗?

    1
    SELECT whatever AS VALUE FROM TABLE HAVING VALUE > 1;

    我仍然不会使用"值"。但是可以肯定的是,在您的文档中查找它!


    推荐阅读

      linux远程执行多命令?

      linux远程执行多命令?,工具,服务,命令,状态,暂停,代码,底部,时间,地址,系统,L

      linux线程查询命令?

      linux线程查询命令?,系统,第一,线程,命令,软件,名称,信息,进程,选项,方法,Lin

      linux命令行执行工具?

      linux命令行执行工具?,工具,系统,网络,分析,工作,服务,状态,信息,电脑,发行,s

      linux简单查询命令?

      linux简单查询命令?,地址,命令,信息,设备,电脑,系统,工作,文件,终端,内容,Lin

      linux执行命令后无号?

      linux执行命令后无号?,系统,环境,信息,工具,状态,数据,命令,文件,字符集,环

      linux周期执行命令?

      linux周期执行命令?,工作,系统,周期,地址,命令,工具,信息,时间,任务,目录,lin

      查询linux上调度命令?

      查询linux上调度命令?,系统,策略,实时,信息,状态,时间,进程,电脑,报告,分析,L

      写5条linux命令语句?

      写5条linux命令语句?,工作,地址,系统,信息,目录,命令,管理,标准,功能,文件,li

      linux执行命令大全?

      linux执行命令大全?,工作,系统,地址,信息,命令,目录,工具,基础,设备,发行,Lin

      循环执行linux命令?

      循环执行linux命令?,工具,系统,名称,代码,第一,环境,位置,数字,脚本,变量,Lin

      linux命令语句规律?

      linux命令语句规律?,系统,管理,基础,网络,信息,命令,服务,简介,工具,标准,lin

      linux命令执行很慢?

      linux命令执行很慢?,软件,系统,工具,分析,机构,服务,培训,教育,数字,数据,Lin

      linux命令行执行py?

      linux命令行执行py?,系统,环境,官网,一致,文件,程序,脚本,源文件,后台,终端,l

      linux查看执行命令?

      linux查看执行命令?,系统,服务,情况,信息,命令,暂停,标准,概念,实时,第一,lin

      linux命令连续执行?

      linux命令连续执行?,连续,通信,工具,数据,代码,命令,设备,系统,发行,情况,如

      linux查询网关命令?

      linux查询网关命令?,网络,信息,地址,环境,系统,网关,名字,中心,状态,命令,lin

      linux执行命令卡住?

      linux执行命令卡住?,系统,环境,密码,数据,信息,分析,软件,异常,服务,命令,Lin

      linux命令错误代码?

      linux命令错误代码?,系统,密码,电脑,网络,手机,网址,软件,代码,设备,老板,Lin

      linux命令执行不动了?

      linux命令执行不动了?,系统,电脑,数据,管理,信息,密码,命令,环境,地方,分析,l

      linux脚步中执行命令?

      linux脚步中执行命令?,工具,代码,命令,名称,系统,连续,环境,发行,文件,终端,l