Вставить все строки в один ряд и столбец - PullRequest
2 голосов
/ 09 сентября 2011

У меня следующий запрос:

SELECT 
    '' + CONVERT(VARCHAR(MAX),c.ClientId) + ','
FROM [dbo].[tblClient] c

Это возвращает 17 000 + строк.Есть ли способ заставить все эти строки возвращаться как 1 значение?Например:

 6A7A24CD-061C-4653-9790-882D90F81E1D,0980722E-6E96-4498-B3BB-BFB4CA60EAC6,etc etc etc.

Я пытаюсь использовать это как параметр для тестирования.

Ответы [ 2 ]

5 голосов
/ 09 сентября 2011

это работает для вас?

DECLARE @v VARCHAR(MAX)
SELECT @v = ''

SELECT 
    @v = @v +  CONVERT(VARCHAR(MAX),c.ClientId) + ','
FROM [dbo].[tblClient] c
WHERE c.ClientId IS NOT NULL


SELECT  @v 

Примечание : просто имейте в виду, что если вы добавляете ORDER BY, то сортировка не гарантируется, в этом случае используйте xmlпуть, как показано в Ответ Ремуса

См. также: Объединение значений из нескольких строк в один заказанный столбец

4 голосов
/ 09 сентября 2011

В статье рассматривается ряд методов, имеющихся в вашем распоряжении: Объединение значений строк в Transact-SQL . Моя любимая техника - это метод черного ящика XML:

SELECT cast(c.ClientId as varchar(20)) + ','
FROM [dbo].[tblClient] c
for xml path(''), type;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...