大家好,我在学校遇到这个问题:
有一个表叫它clientProjectDetail
有以下列
Clientid, ClientName, ProjectName
Corp
数据库内。
每个客户都可以访问一个或多个项目。编写一个 SQL 查询以将多个ProjectNames
nextClientnames
作为单个逗号分隔列表返回。我真的无法弄清楚这已经有几个小时了......感谢任何可以分享一些见解的人
大家好,我在学校遇到这个问题:
有一个表叫它clientProjectDetail
有以下列
Clientid, ClientName, ProjectName
Corp
数据库内。
每个客户都可以访问一个或多个项目。编写一个 SQL 查询以将多个ProjectNames
nextClientnames
作为单个逗号分隔列表返回。我真的无法弄清楚这已经有几个小时了......感谢任何可以分享一些见解的人
你应该能够使用这样的东西:
SELECT distinct c1.Clientid,
c1.ClientName,
LEFT(projects , LEN(projects)-1) projects
FROM clientProjectDetail c1
CROSS APPLY
(
SELECT c2.ProjectName + ', '
FROM clientProjectDetail c2
where c1.Clientid = c2.Clientid
FOR XML PATH('')
) m (projects)
解决这个查询:(STUFF 删除了第一个逗号和 FOR XML PATH('') 帮助您将文本连接到单行)
SELECT Clients.ClientName,
Projects = STUFF(
(
SELECT ', ' + clientProjectDetail.ProjectName
FROM clientProjectDetail
WHERE clientProjectDetail.Clientid = Clients.Clientid
FOR XML PATH('')
), 1, 2, '')
FROM clientProjectDetail AS Clients