2011-04-12 22 views
1

我試圖從一個表中使用「合併」串聯多個行值,用逗號分隔並將其列爲子查詢中的一列。如何在子查詢中使用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

回答

3

不能它作爲一個子查詢:你必須將它移動到一個UDF。

在SQL Server 2005中,您可以使用XML PATH技術。但對於SQL Server 2000,你必須有一個單獨的標量UDF與表訪問和級聯

+0

謝謝gbn。就像我懷疑......好吧,有時間升級數據庫。 再次感謝 – Liming 2011-04-12 06:06:15

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 

希望它的作品!

相關問題