2012-11-09 74 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