-3

大家好,我在学校遇到这个问题:

有一个表叫它clientProjectDetail有以下列

Clientid, ClientName, ProjectName

Corp数据库内。

每个客户都可以访问一个或多个项目。编写一个 SQL 查询以将多个ProjectNamesnextClientnames作为单个逗号分隔列表返回。我真的无法弄清楚这已经有几个小时了......感谢任何可以分享一些见解的人

4

2 回答 2

1

你应该能够使用这样的东西:

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)

请参阅带有演示的 SQL Fiddle

于 2013-02-13T16:58:29.093 回答
1

解决这个查询:(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
于 2013-02-13T17:04:30.897 回答