2013-09-26 99 views
1

我需要將多行的列結果合併爲一個變量。 我的數據集樣本可以在下面找到。將多行的列值合併爲1

EmailAddress 
------------- 
[email protected] 
[email protected] 

目前,我正在使用STUFF到EmailAddress柱組合成一個分號分隔的列表。 下面可以看到一個示例。

SELECT @EmailAddress = CONVERT(nvarchar(max)  
       , STUFF(
        (SELECT ';' + EmailAddress FROM EmployeeCourseDetails) 
       , 1 
       , 1 
       , '') 
      ) 

期望的結果應該[email protected];[email protected]但是當我執行語句,我得到以下錯誤:Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

任何幫助嗎?

回答

1

我也曾經與FOR XML PATH('')類似的東西。 我喜歡這個:

SELECT @EmailAddress = CONVERT(nvarchar(max)  
       , STUFF(
        (SELECT ';' + EmailAddress FROM EmployeeCourseDetails FOR XML PATH('')) 
       , 1 
       , 1 
       , '') 
      ) 
+0

正是我在找Sekky。忘記了For XML Path位 –

1

您可以使用COALESCE

DECLARE @EmailAddress VARCHAR(8000) 

SELECT @EmailAddress = COALESCE(@EmailAddress + ';', '') + EmailAddress 
FROM  EmployeeCourseDetails 
ORDER BY EmailAddress 

SELECT @EmailAddress 

DEMO

結果:[email protected];[email protected]