SQL Server:使用自联接的问题

时间:2013-02-13 16:53:24

标签: sql sql-server-2008 tsql

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

有一个名为clientProjectDetail的表,它有以下列

Clientid, ClientName, ProjectName

Corp数据库中。

每个客户都可以访问一个或多个项目。编写SQL查询以将ProjectNames旁边的多个Clientnames作为单个逗号分隔列表返回。我现在无法想象它已经有几个小时了...感谢任何可以分享一些见解的人

2 个答案:

答案 0 :(得分: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 with Demo

答案 1 :(得分: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