Sql server 带括号的周围查询导致XML错误

Sql server 带括号的周围查询导致XML错误,sql-server,sql-server-2008,tsql,Sql Server,Sql Server 2008,Tsql,当试图包装查询以进行进一步处理时,我只在查询周围加上括号,就出现了一个错误。请参阅下面的查询,如果我只是删除了包装括号,查询就会工作。但是当我使用括号时,我得到了这个错误: 关键字“for”附近的语法不正确 有人知道为什么会这样吗 谢谢 在查询周围单独添加括号会导致错误,但如果在开始括号之前键入选择,代码将运行,这意味着您可以使用它进行进一步处理: if OBJECT_ID('A_POSITIONS') is not null drop table [dbo].[A_POSITIONS] c

当试图包装查询以进行进一步处理时,我只在查询周围加上括号,就出现了一个错误。请参阅下面的查询,如果我只是删除了包装括号,查询就会工作。但是当我使用括号时,我得到了这个错误:

关键字“for”附近的语法不正确

有人知道为什么会这样吗


谢谢

在查询周围单独添加括号会导致错误,但如果在开始括号之前键入
选择
,代码将运行,这意味着您可以使用它进行进一步处理:

if OBJECT_ID('A_POSITIONS') is not  null
drop table [dbo].[A_POSITIONS]

create table [dbo].[A_POSITIONS]([ID] int,[Name] varchar(100))

insert into [dbo].[A_POSITIONS] values
(208418, 'one'),(208418, 'two'),(208418, 'three'),(208418, 'four'),(208418, 'five')

select
(
select '; ' + [NAME]  
from (select a.[NAME] as 'NAME'
    from [MS].[dbo].[A_POSITIONS] a
    where a.ID = 208418           
    except 
    select top 1 b.[NAME] 
    from [MS].[dbo].[A_POSITIONS] b
    where b.ID = 208418) as c
for XML PATH(''),TYPE
) 
最后要考虑的一点是:
TOP
关键字没有
orderby
子句是不确定的

来自Microsoft文档(更多信息):

当TOP与ORDERBY子句一起使用时,结果集被限制为前N个有序行;否则,它将以未定义的顺序返回前N行数

<>你应该考虑将<<代码>顺序按添加到查询的第二部分:

select '; ' + [NAME]  
from (select a.[NAME] as 'NAME'
    from [MS].[dbo].[A_POSITIONS] a
    where a.ID = 208418           
    except 
    select top 1 b.[NAME] 
    from [MS].[dbo].[A_POSITIONS] b
    where b.ID = 208418
    --Add an ORDER BY clause here
) as c
for XML PATH(''),TYPE

这是您的全部代码吗?没有其他代码吗?是的,它是查询窗口中唯一的代码。
select '; ' + [NAME]  
from (select a.[NAME] as 'NAME'
    from [MS].[dbo].[A_POSITIONS] a
    where a.ID = 208418           
    except 
    select top 1 b.[NAME] 
    from [MS].[dbo].[A_POSITIONS] b
    where b.ID = 208418
    --Add an ORDER BY clause here
) as c
for XML PATH(''),TYPE