powered by simpleCommunicator - 2.0.57     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Объединение n строк в столбце в одну строку
12 сообщений из 12, страница 1 из 1
Объединение n строк в столбце в одну строку
    #37217701
sergioSD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.

Возник вопрос по объединению n строк запроса в одну строчку с разделителем. Можно ли как нибудь такое сделать?

Например:
Запрос:
1
2
3

Нужно вывести:
1, 2, 3

З.Ы. поиском не нашел похожих проблем.
...
Рейтинг: 0 / 0
Объединение n строк в столбце в одну строку
    #37217745
v_smirnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sergioSD,

Для ASA:

SQL Anywhere Server - SQL Reference » Using SQL » SQL functions » SQL functions (E-O) » LIST function [Aggregate]

LIST function [Aggregate]
Returns a comma-delimited list of values.

Syntax
LIST(
[ DISTINCT ] string-expression
[, delimiter-string ]
[ ORDER BY order-by-expression [ ASC | DESC ], ... ] )
...
Рейтинг: 0 / 0
Объединение n строк в столбце в одну строку
    #37217765
sergioSD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не совсем понятно насчет синтаксиса.
Так должно быть?
Код: plaintext
LIST(SELECT ID FROM Table) 

Скрипт проверяю в DBArtisan 8.1.5 - в нем могут быть ограничения на функции? А то пишет что функция LIST не найдена.
...
Рейтинг: 0 / 0
Объединение n строк в столбце в одну строку
    #37217830
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergioSD,
Код: plaintext
SELECT List(id, ', ' ORDER BY id) AS id_list FROM table
но только для СУБД Sybase ASA, для ASE такого нет.
...
Рейтинг: 0 / 0
Объединение n строк в столбце в одну строку
    #37217874
sergioSD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Используется Sybase ASE 12.5.4 :-(
На ней ничего не получится сделать?
...
Рейтинг: 0 / 0
Объединение n строк в столбце в одну строку
    #37218146
sergioSD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получилось сделать, только не очень компактно, через временную таблицу(
...
Рейтинг: 0 / 0
Объединение n строк в столбце в одну строку
    #37218953
invariant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sergioSD,

Можно еще через update with variables, примерно так (в примере выбираем поле Field из таблицы mytable, годится любое выражение varchar-типа)
Код: plaintext
1.
2.
3.
declare @str varchar( 256 )
uptate mytable set @str=(case when @str is not null then @str+','+ Field else Field end) where  1 = 1 
select @str

Недостатки метода - ограничение размера @str, нет order by.
Ну и я не проверял, запускается ли в этом случае триггер (хотя если триггер проверяет, какие именно поля изменились, а тут ничего не меняется в таблице, операция должна быть безопасной).
...
Рейтинг: 0 / 0
Объединение n строк в столбце в одну строку
    #37218981
invariant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sergioSD,

Посмотрел. Триггер на update действительно запускается. Так что этот метод лучше применять осторожно...
...
Рейтинг: 0 / 0
Объединение n строк в столбце в одну строку
    #37219401
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 15.04.2011 9:17, sergioSD wrote:

> Возник вопрос по объединению n строк запроса в одну строчку с разделителем.
> Можно ли как нибудь такое сделать?

Не только не можно, но и НЕ НУЖНО. Делайте это на клиенте.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Объединение n строк в столбце в одну строку
    #37219403
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 15.04.2011 19:26, invariant wrote:

> Посмотрел. Триггер на update действительно запускается. Так что этот метод лучше
> применять осторожно...

Интересно, а почему бы он должен был по вашему мнению не запускаться ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Объединение n строк в столбце в одну строку
    #37257799
JenyaD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно ещё в качестве так сказать 'легального' решения, написать UDF с курсором.
...
Рейтинг: 0 / 0
Объединение n строк в столбце в одну строку
    #37259028
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а так не сработает ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TABLE #tst (f1 VARCHAR( 20 ))
GO
INSERT INTO #tst (f1) SELECT '1'
INSERT INTO #tst (f1) SELECT '2'
INSERT INTO #tst (f1) SELECT '3'
INSERT INTO #tst (f1) SELECT '4'
INSERT INTO #tst (f1) SELECT '5'
GO
DECLARE @str VARCHAR( 255 )
SELECT @str=isnull(@str+',','')+f1 FROM #tst
SELECT @str 
GO
DROP TABLE #tst
GO
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Объединение n строк в столбце в одну строку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]