как хранить в одной ячейке значения строк, которые имеют одинаковые имена, но разные идентификаторы?

0
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
  • 3
    Какую СУБД вы используете?
  • 0
    MYSQL сервер phpmyadmin
Теги:
string-aggregation

2 ответа

0
Лучший ответ

MYSQL:

Используйте функцию GROUP_CONCAT.

SELECT MIN(id), name, GROUP_CONCAT(DISTINCT Value SEPARATOR ' + ') AS Value
FROM demo
GROUP BY name 

DEMO

http://sqlfiddle.com/#!9/d75aca/2

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:

http://sqlfiddle.com/#!18/d75ac/2

  • 0
    спасибо всем, решение было это
  • 0
    ВЫБЕРИТЕ МИН (id), имя, GROUP_CONCAT (отличное значение SEPARATOR '+') AS Значение ОТ демо GROUP BY name
0

Oracle:

SELECT MIN(ID), NAME, LISTAGG(VALUE,'+') WITHIN GROUP (ORDER BY NAME) AS VALUE
FROM DEMO 
GROUP BY NAME 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню