2013-09-26 4 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. Забыл о бит пути для XML –

1

Вы можете использовать COALESCE:

DECLARE @EmailAddress VARCHAR(8000) 

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

SELECT @EmailAddress 

DEMO

Результат: [email protected];[email protected]

Смежные вопросы