Многократная переменная присваивания 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;