我正在尝试使用“Coalesce”从一个表连接多个行值,用逗号分隔并将其列为子查询中的列。
中的某些内容
Declare @assignTo nvarchar(4000)
Select
table1.columnA
table1.columnB
(
select @assignTo = Coalesce(@assignTo + ', ', '') + CAST(Name as nvarchar(250))
from
table2
where
...
)
from table1
where
.....
我不断收到“=''附近的语法错误。”
如果我只是尝试执行调用Coalesce函数的子查询,那么它很好。即
Declare @assignTo nvarchar(4000)
select @assignTo = Coalesce(@assignTo + ', ', '') + CAST(Name as nvarchar(250))
from
table2
where
...
Select @assignTo
没关系。所以我的问题是,如何将其作为子查询包含在内?
非常感谢
ps:这是SQL Server 2000特有的。
答案 0 :(得分:3)
您无法将其作为子查询包含在内:您必须将其移至UDF中。
在SQL Server 2005中,您可以使用XML PATH技术。但是对于SQL Server 2000,您必须有一个单独的标量UDF,其中包含表访问和连接
答案 1 :(得分:0)
据我所知, 如果你更喜欢SubQuery,你可以这样做。 但上述解决方案是最方便的解决方案。
Declare @assignTo nvarchar(4000)
Select
table1.columnA
table1.columnB
tmp.[c]
from table1,
(
select @assignTo = Coalesce(@assignTo + ', ', '') + CAST(Name as nvarchar(250)) as [c]
from
table2
where
...
) as tmp
where
希望它有效!