sql server 按分组拼接数据
时间: 2024-10-20 18:06:37 浏览: 24
SQL Server 中的`GROUP BY`语句通常用于对数据库表中的数据进行分组,并且常常配合聚合函数如`SUM`, `COUNT`, `AVG`, `MIN`, `MAX`一起使用,以便汇总每个组的数据。当你想要将分组后的数据拼接在一起,你可以使用`STRING_AGG` (新版本SQL Server 2017及以上) 或者 `CONCAT()` 函数(适用于较旧版本),这两个函数可以将每个组内的行值连接成一个字符串。
例如,假设你有一个包含员工信息的表`Employees`,你想按照部门ID分组,并把每个部门的员工名字合并为一个逗号分隔的列表,你可以这样做:
```sql
SELECT DepartmentID, STRING_AGG(EmployeeName, ', ') AS EmployeesList
FROM Employees
GROUP BY DepartmentID;
```
对于较早的SQL Server版本,可以使用以下查询:
```sql
SELECT DepartmentID, STUFF(
(
SELECT ', ' + cast(EmployeeName as varchar)
FROM Employees E2
WHERE E1.DepartmentID = E2.DepartmentID
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)'),
1, 2, ''
) AS EmployeesList
FROM Employees E1
GROUP BY DepartmentID;
```
这里`STUFF`函数用于替换XML路径的结果并删除第一个','。
阅读全文