insert into demo values ('1','name1','Text1');
insert into demo values ('2','name1','Text2');
insert into demo values ('3','name1','Text3');
как я могу получить такую строку?
id | name | value
1 | name1 | Text1 + Text2 + Text3
MYSQL:
Используйте функцию GROUP_CONCAT
.
SELECT MIN(id), name, GROUP_CONCAT(DISTINCT Value SEPARATOR ' + ') AS Value
FROM demo
GROUP BY name
DEMO
MSSQL:
SELECT MIN(id), name,
Value = STUFF((
SELECT '+ ' + di.value + ' '
FROM demo di
WHERE d.name = di.name
GROUP BY di.value
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
FROM demo d
GROUP BY name
DEMO:
Oracle:
SELECT MIN(ID), NAME, LISTAGG(VALUE,'+') WITHIN GROUP (ORDER BY NAME) AS VALUE
FROM DEMO
GROUP BY NAME