0

Как объединить строки в выбранном запросе? (В Advantage Data Architect)Объединить строки в выбранном запросе (в Advantage Data Architect)

Я попытался запустить следующие скрипты:

Первый сценарий:

declare @str string; 
set @str = ''; 
select @str = @str + field_1 from my_table1 

Но я получаю результат, в котором все строки содержат "ложь", как эта картина:

enter image description here

Второй сценарий:

declare @str string; 
select @str = coalesce(@str + ', ','') + field_1 from my_table1 

На этот раз все строки пустые (примечание: поле из «my_table1» не равно null).

Изображение:

enter image description here

Я пытался искать решение в Интернете для Architect Advantage Data, но я не смог найти решение.

+0

Какое значение составляет ваша таблица? В частности, какой тип данных является полем, которое вы пытаетесь запросить? –

+0

Чего вы пытаетесь достичь? Пожалуйста, дайте четкое описание того, какие данные у вас есть и как должен выглядеть вывод. –

+0

@ JensMühlenhoff Извините за длинный ответ. Спасибо за ваш ответ. Я хочу объединить результат из запроса select в один столбец. Тип столбца результата - char. В общем, я хочу, чтобы строка содержала результат из запроса select моего столбца, с отдельным символом (','). Например, «result1, result2, result3 ...» – netwer

ответ

1

Я предполагаю, что вы хотите что-то вроде GROUP_CONCAT в MySQL или string_agg в Oracle/Postgres.

Общий алгоритм для этого что-то вроде:

DECLARE @S STRING; 

DECLARE CURSOR C AS 
SELECT 
    CONVERT(field_1, SQL_CHAR) AS "val" 
FROM 
    my_table1; 

OPEN C; 

WHILE FETCH C do 
    -- Since @S is NULL for the first row this will ensure 
    -- that the result does not start with the separator. 
    @S = COALESCE(@S + ', ' + C.val, C.val); 
END; 

CLOSE C; 

SELECT @S; 

A general function can be found on the ADS forum.

PS: Это обратная splitting a string into separate rows.

+0

Спасибо за ваш пример. Я думаю, что это решение для меня хорошо. – netwer

Смежные вопросы