2

让我们建立2个表

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*
  • prof name 应该是一个列表,包含来自同一所学校的所有 profs。

现在,我知道用过程或函数构建列表不是问题,但是有没有办法构建一个可以返回这种结果的查询。

PS查询应该返回单行,所以来自学校左连接教授的结果表不是我想要实现的结果。

谢谢。

4

2 回答 2

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
于 2012-11-09T10:35:32.010 回答
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
于 2012-11-09T10:54:50.240 回答