如何在一个单元格行中存储具有相同名称但不同 ID 的值?
how to store in one cell rows value what have the same name but different id?
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
演示
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
演示:
甲骨文:
SELECT MIN(ID), NAME, LISTAGG(VALUE,'+') WITHIN GROUP (ORDER BY NAME) AS VALUE
FROM DEMO
GROUP BY NAME
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
演示
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
演示:
甲骨文:
SELECT MIN(ID), NAME, LISTAGG(VALUE,'+') WITHIN GROUP (ORDER BY NAME) AS VALUE
FROM DEMO
GROUP BY NAME