sqlserver groupBy 分组后同一个字段数据用逗号拼接返回 csdn
时间: 2024-09-12 12:06:27 浏览: 49
在SQL Server中,如果你想要对某个字段进行分组并把每个组内的数据合并成一个字符串,通常需要使用`STRING_AGG()`函数或者旧版本的`STUFF()`、`REPLACE()`等辅助函数配合`FOR XML PATH()`. `GROUP BY`之后,你可以这样操作:
```sql
SELECT column_name,
STRING_AGG(value_column, ',') WITHIN GROUP (ORDER BY value_column) AS grouped_values
FROM your_table
GROUP BY column_name;
```
这里,`column_name`是你想分组的字段,`value_column`是要合并的值的字段。`WITHIN GROUP (ORDER BY value_column)`指定按特定顺序聚合。
如果你还在使用旧版本的SQL Server,可以尝试以下示例:
```sql
SELECT column_name,
REPLACE(
(
SELECT STRING+
FROM (
SELECT ',' + value_column AS [STRING]
FROM your_table
WHERE column_name = T.column_name
ORDER BY value_column
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
, ',', ''
), '', ', ')
FROM your_table T
GROUP BY column_name;
```
这将首先按列分组,然后通过`FOR XML PATH()`生成XML字符串,并用逗号连接元素,最后替换掉所有多余的逗号。
阅读全文