Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > select собрать в строку. Возможно ли??


Автор: gambit 29.7.2011, 15:33
Добрый день. Имеется запрос, например Select id from Users
он возвращает столбец
id
1
3
7
34

А можно ли как то собрать этот результат в строку N'1,3,7,34'??

Автор: Экскалупатор 29.7.2011, 20:09
в SQLServer можно, делал(функции работы со строками, в процедуре по результату выбора можно пройтись "курсором" и сделать с данными все что угодно, потом вернуть результат). а в остальных базах не знаю, не сталкивался.

Автор: Yagmort 31.7.2011, 20:28
Цитата(gambit @ 29.7.2011,  15:33)
Добрый день. Имеется запрос, например Select id from Users
он возвращает столбец
id
1
3
7
34

А можно ли как то собрать этот результат в строку N'1,3,7,34'??

Наподобие этого в SQL, но это статически. Самое то получается в C#, закидываешь все значения в массив и там выбираешь котороые тебе нужно и выводишь.
Код

DECLARE @stroka1 Varchar;
DECLARE @stroka2 Varchar;
DECLARE @stroka3 Varchar;
DECLARE @stroka4 Varchar;
SELECT @stroka1=id_user from [base].[dbo].[ADMIN] WHERE id_user=1;
SELECT @stroka2=id_user from [base].[dbo].[ADMIN] WHERE id_user=2;
SELECT @stroka3=id_user from [base].[dbo].[ADMIN] WHERE id_user=3;
SELECT @stroka4=id_user from [base].[dbo].[ADMIN] WHERE id_user=4;
Select idSumm=@stroka1+','+@stroka2+','+@stroka3+','+@stroka4 from [shopbase].[dbo].[ADMIN]
WHERE id_user<=@stroka1

Автор: CYBERDREAM 1.8.2011, 12:42
Привет gambit.

как вариант можно так (с базами не особо дружу):
Код

DECLARE @RESULT VARCHAR(MAX)='';
SELECT @RESULT=LTRIM(STR(ID))+','+@RESULT from comments
SELECT @RESULT 'CONCATENATION';


на наборе 
Цитата

ID
21
22
23
....
42


вернуло
Цитата

CONCATENATION
35,34,33,40,38,37,36,42,28,41,39,27,32,31,30,29,24,23,22,21,

прийдется резать еще к тому же посл. символ.

Добавлено через 1 минуту и 58 секунд
http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/
тут добрые люди хорошо описывают разные подходы к твоему вопросу.

Автор: gambit 1.8.2011, 13:15
Yagmort, что это вообще??
Экскалупатор, спасибо.
CYBERDREAM, отдельное спасибо и +

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)