详细信息表中的SQL Server列表

时间:2012-11-09 10:28:45

标签: sql-server

让我们构建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*
  • 教授名称应该是由同一所学校的所有教授组成的列表。

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

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

THX。

2 个答案:

答案 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 :(得分: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
相关问题