Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
靠近';的SQL子查询语法错误';——不缺少别名_Sql_Reporting Services_Sql Server 2008 R2_Subquery_Ssrs 2000 - Fatal编程技术网

靠近';的SQL子查询语法错误';——不缺少别名

靠近';的SQL子查询语法错误';——不缺少别名,sql,reporting-services,sql-server-2008-r2,subquery,ssrs-2000,Sql,Reporting Services,Sql Server 2008 R2,Subquery,Ssrs 2000,我有一个与类似的问题,但这种情况下的解决方案是向子查询添加别名。在我的例子中,我的每个子查询都有一个别名,但我在每个子查询的末尾都会收到消息error syntax near') 我在2008年R2写这个查询,但目标是SSR2000 我的整个查询相当长,但这里有一个缩短的伪代码版本: SELECT A ,B ,C ,D ,E FROM ( SELECT A as 'A', B as 'B', id

我有一个与类似的问题,但这种情况下的解决方案是向子查询添加别名。在我的例子中,我的每个子查询都有一个别名,但我在每个子查询的末尾都会收到消息
error syntax near')

我在2008年R2写这个查询,但目标是SSR2000

我的整个查询相当长,但这里有一个缩短的伪代码版本:

SELECT  A
       ,B
       ,C
       ,D
       ,E

FROM
     (
       SELECT A as 'A', B as 'B', id
       FROM table t
       WHERE A = 'some value'
       GROUP BY A, B
     ) AS sub1

LEFT JOIN 
     (
       SELECT C as 'C', D as 'D', id
       FROM 
            (
               SELECT id
               FROM nutherTable
               WHERE id IN
               (
                   SELECT DISTINCT id
                   FROM sub1
               )
            )
       WHERE D like '%param%'
     ) AS sub2

    ON sub2.id = sub1.id

LEFT JOIN
     (
       SELECT E as 'E', id
       FROM finalTable
       WHERE E IS NOT NULL
     ) AS sub3

     ON sub3.id = sub2.id
您会注意到,在第一个
左JOIN
中,JOIN使用子查询,而该子查询中的
FROM
WHERE
子句也使用子查询。在我的实际查询中,两个
左连接都具有相同的结构。我不明白的一点是,嵌套子查询不需要别名。如果我试图在嵌套子句中使用别名,我会得到一个错误。因此,它只在
左连接中的外部查询中遇到问题


我在其他帖子中读到过,子查询只能返回单个字段的结果,但我见过许多示例,其中一个子查询返回多个字段,所以我认为这不是问题所在。或者,如果这将成为一个问题,错误将是不同的。我所读到的所有内容都将此问题归因于缺少子查询的别名,并且无论是否使用别名,我都会得到相同的结果(完全没有别名,以及使用
作为
和不使用
作为
)。

您需要为作为结果集使用的每个子查询提供一个表别名:

LEFT JOIN 
     (
       SELECT C as 'C', D as 'D', id
       FROM 
            (
               SELECT id
               FROM nutherTable
               WHERE id IN
               (
                   SELECT DISTINCT id
                   FROM sub1
               )
            ) SomeTableName -- HERE IS THE PROBLEM
       WHERE D like '%param%'
     ) AS sub2

你确定你没有在我想要“%param%”
的位置之前缺少别名吗?谢谢,@yack。这修正了错误。现在,我在第一个子查询中遇到了一个不同的错误<代码>无效的对象名称“sub1”
。我试过好几次重命名。我不知道还有什么好尝试的。