Sql 从3个表中选择数据,而多个值应以逗号分隔
我有以下三个表格: 。。。。。。。 ....... 我运行以下查询Sql 从3个表中选择数据,而多个值应以逗号分隔,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有以下三个表格: 。。。。。。。 ....... 我运行以下查询 SELECT Employee.EmployeeId, EmployeeName, ProjectName FROM Employee JOIN ProjEmp ON Employee.EmployeeId=ProjEmp.EmployeeId JOIN Project ON Project.ProjectId=ProjEmp.ProjectId 并给出如下结果: 但我需要这样的结果: 请为我提供所需结果的最佳查询。
SELECT Employee.EmployeeId,
EmployeeName,
ProjectName
FROM Employee
JOIN ProjEmp
ON Employee.EmployeeId=ProjEmp.EmployeeId
JOIN Project
ON Project.ProjectId=ProjEmp.ProjectId
并给出如下结果:
但我需要这样的结果:
请为我提供所需结果的最佳查询。您可以执行以下操作以获得所需结果:
WITH CTE AS(SELECT Employee.EmployeeId,
EmployeeName,
ProjectName
FROM Employee
JOIN ProjEmp
ON Employee.EmployeeId=ProjEmp.EmployeeId
JOIN Project
ON Project.ProjectId=ProjEmp.ProjectId)
SELECT EmployeeId,EmployeeName,
ProjectName = STUFF((
SELECT ',' + convert(varchar(10),T2.ProjectName)
FROM CTE T2
WHERE T1.EmployeeName = T2.EmployeeName
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
FROM CTE T1
GROUP BY EmployeeId,EmployeeName
ORDER BY EmployeeId
结果:
EMPLOYEEID EMPLOYEENAME PROJECTNAME
1 Emp1 ProjA,ProjB
3 Emp3 ProjC
4 Emp4 ProjC,ProjD
5 Emp5 ProjE
7 Emp7 ProjE
8 Emp8 ProjE
请参阅中的结果