Конкатенация в определенном порядке, заданном числом - PullRequest
1 голос
/ 27 сентября 2019

У меня есть такая таблица:

enter image description here

Я хочу объединить имя Product в данном Product_order с помощью ID.

Поэтому я должен получить что-то вроде: CC-TC-CA для идентификатора 1.

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019

Если вы можете использовать хранимую процедуру вместо одного запроса, оператор + = может сделать то, что вы ищете.

DECLARE @Product_order VARCHAR(100) = '';
SELECT @Product_order += Product + '-' FROM [table] WHERE id = 1 ORDER BY Product_Order;
SELECT SUBSTRING(@Product_order, 0, LEN(@Product_order));
0 голосов
/ 27 сентября 2019

вы можете использовать string_agg() - это будет работать SQL Server 2016 +

select id, string_Agg(product,',') as pname
from tablename
group by id

ИЛИ вы можете использовать stuff()

SELECT id,
       STUFF((SELECT ',' + product
              FROM tablename AS T1
              WHERE  T1.id = T2.id
              FOR XML PATH('')), 1, 1, '')
FROM   tablename AS T2
GROUP  BY id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...