Объедините данные разных строк - PullRequest
0 голосов
/ 07 мая 2020

Не могли бы вы предложить подход для получения logi c для ниже

Примечание: этот logi c необходимо добавить для существующего запроса JOIN, который я уже закончил.

Вопрос: Имя таблицы: T_FULL_DETAILS, База данных: SQL Сервер

Ожидается

select DESCRIPTION from T_FULL_DETAILS WHERE SEQ_ID=3

, тогда он должен вернуть "Hellooo .. Доброе утро Доброе утро Добрый день, добрый вечер,

select DESCRIPTION from T_FULL_DETAILS WHERE SEQ_ID=5

, тогда он должен вернуть «Это последняя запись Five»

Итак, здесь TEXT_IDX не имеет фиксированного ограничения. Не могли бы вы проверить и помочь мне написать соответствующий запрос на SQL сервере?

Справочные данные ниже

image

Ответы [ 2 ]

1 голос
/ 07 мая 2020

У вас есть функция string_agg для агрегирования текстовых полей.

select string_agg(DESCRIPTION, ' ') from T_FULL_DETAILS where SEQ_ID=3

Обратите внимание, что эта функция доступна только с SQL Server 2016, если вы используете предыдущую версию тогда вам нужно найти альтернативу, например, используя функции XML:

select DESCRIPTION + ' ' as DESCRIPTION 
from T_FULL_DETAILS 
where SEQ_ID=3 
order by TEXT_IDX
for XML path('')
0 голосов
/ 07 мая 2020

В зависимости от вашей версии вы можете использовать одно из следующего:

SELECT STRING_AGG(DESCRIPTION, ' ') WITHIN  GROUP (ORDER BY TEXT_IDX ASC)
FROM T_FULL_DETAILS
WHERE SEQ_ID=3

SELECT STUFF
(
    (
        select ' ' + DESCRIPTION  AS DESCRIPTION 
        from T_FULL_DETAILS 
        where SEQ_ID=3 
        ORDER BY TEXT_IDX
        for XML path('')
    ).value('.', 'NVARCHAR(MAX)')
    ,1
    ,1
    ,''
);

Обратите внимание, что здесь важна ORDER BY конкатенация значений TEXT_IDX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...