Как объединить возвращаемые результаты запроса в одну строку - PullRequest
0 голосов
/ 16 июня 2019

У меня есть таблица, в которой сохраняется код персонала.

Когда я выбираю из этой таблицы, я получаю 3 строки результата, например:

2129,3394,3508,3534
2129,3508
4056

Я хочу, чтобы при создании результата выбора объединить в одномстрока, такая как:

2129,3394,3508,3534,2129,3508,4056

или отличное значение, такое как:

2129,3394,3508,3534,4056

Ответы [ 2 ]

2 голосов
/ 16 июня 2019

В идеале следует избегать хранения данных CSV вообще в ваших таблицах.При этом для вашего первого набора результатов мы можем попытаться использовать STRING_AGG:

SELECT STRING_AGG(col, ',') AS output
FROM yourTable;

Ваше второе требование более сложное, и мы можем попытаться просмотреть таблицу, чтобы удалить дубликаты:

WITH cte AS (
    SELECT DISTINCT VALUE AS col
    FROM yourTable t
    CROSS APPLY STRING_SPLIT(t.col, ',')
)

SELECT STRING_AGG(col, ',') WITHIN GROUP (ORDER BY CAST(col AS INT)) AS output
FROM cte;

Демо

1 голос
/ 16 июня 2019

Я решил это с помощью STUFF и FOR XML PATH:

SELECT 
    STUFF((SELECT ',' + US.remain_uncompleted 
           FROM Table_request US
           WHERE exclusive = 0 AND reqact = 1 AND reqend = 0
           FOR XML PATH('')), 1, 1, '') 

Спасибо, Тим

...