2012-11-09 75 views
2

我们要建造2台SQL服务器列表

create table School 
(
IdSchool int not null PK, 
Name  varchar(10) not null 
) 

create table Prof 
(
IdSchool int not null, 
IdProf  int not null, 
name  varchar (10) 
PK (IdSchool, IdProf) 
) 

我想建立这样的查询:

IdSchool, Prof.Name* 
  • 教授名称应包括所有的列表来自同一所学校的教授。

现在,我知道这是不是建立一个过程或函数列表的问题,而是有没有建立一个查询可以返回这种结果的一种方式。

P.S.查询应该返回单行,所以结果表从学校左边加入教授不是我想要实现的结果。

thx。

+0

请使用的东西命令提供的样本数据与所需的输出中 –

回答

1
SELECT distinct Idschool, profs 
FROM profs p1 
CROSS APPLY 
(
select substring((
    SELECT ',' + name 
    FROM profs p2  
    WHERE p1.Idschool = p2.Idschool 
    FOR XML PATH('') 
    ),2,1000) 
    as Profs  
) profs 
1

试试这个:

SELECT IdSchool, Prof_name = 
    STUFF((SELECT ', ' + [name] 
      FROM Prof b 
      WHERE b.IdProf = a.IdProf 
      FOR XML PATH('')), 1, 2, '') 
FROM Prof a 
GROUP BY IdSchool 
+0

+1,发现它相当最近,喜欢它! – twoleggedhorse