SQLSERVER将子查询数据合并拼接成一个字段

业务场景:
有两张表,部门表和员工表
部门表:
部门编码部门名称
1 A
2 A
3 A
4 B

员工表:
员工名称 所属部门
张三 1
李四 1
王五 1
赵六 2

现在需要一个部门人员报表,要求将该部门的员工合并显示在一列,如:
部门编码 部门名称 所属人员
1 A 张三、李四、王五
2 B 赵六

解决方案:
通过SQLSERVER的FOR XML PATH函数 + STUFF函数,对查询出来的数据进行合并拼接,放到指定的字段
select STUFF((select ‘,’ + emp.name from t_employee emp where emp.dept_id = dept.id for xml path(‘’)),1,1,‘’) as emp_names from t_Department dept

解析:

一、

FOR XML PATH (“行名称”) 将查询结果集以XML形式展现,将多行的结果,展示在同一行

--第一行

<列1名称>列1内容 --第一列

<列2名称>列2内容

……

--第二行

<列1名称>列1内容 --第一列

<列2名称>列2内容

……

二、
STUFF(expression,start,length,replacewith)
STUFF 函数将

你可能感兴趣的:(面试,学习路线,阿里巴巴,android,前端,后端)