Многократная переменная присваивания SQL имеет только 1 (одну) строку

В SQL, если у вас есть такой запрос:

SELECT @text = @text + FirstName + ', '
  FROM Persons

Это обычно производит @text переменная "Джон, Джек, Пит" и т. д.

Тем не менее, в моем случае это запрос:

SELECT @text = @text + FirstName + ', '
  FROM Server.Database.dbo.Persons

Вернулся только один ряд. База данных SQL 2008 R2.

1 ответ

Решение

По-видимому, этот метод работает только на локальных базах данных. Связанные запросы к серверу отправляют переменную туда и обратно только один раз, поэтому добавляется только последняя строка.

Решение - сохранить результаты в локальной временной таблице, а затем выполнить MAV:

SELECT FirstName + ', ' AS t
  INTO #temp
  FROM Server.Database.dbo.Persons

SELECT @text = @text + t FROM #temp;
Другие вопросы по тегам