将子查询结果字符串化为主查询

时间:2013-08-29 14:25:07

标签: sql sql-server

假设我有两张桌子;学生和班级。每个学生都可以上很多课。 我想创建一个查询,打印出以下样式的每个学生: 第1列学生姓名和第2列他们在“数学,历史,地质”中的一系列课程 我知道如何查询每个学生或查询所有课程,但似乎无法围绕让他们一起工作。用于创建字符串的SQL:

DECLARE @classes VARCHAR(1000)
SELECT @classes = COALESCE(@classes + ', ', '') + clss.name
FROM
(
SELECT name
FROM classes
where student.id = 1
)clss
SELECT @classes

1 个答案:

答案 0 :(得分:3)

SELECT name
    , STUFF ((
        SELECT ', ' + c.name
        FROM classes c
        WHERE c.student_id = s.student_id
        FOR XML PATH('')
    ), 1, 1, '') AS classes
FROM students s