例如。
我有三个单独的表:
course
表,其中包含CourseId,StudentId等student
当然包含学生数据和StudentName score
表我只希望每个表中有一列并将它们融合为一列。
CourseId StudentName Scores
---------- ------------- ----------
1 Gashio 10
1 Gashio 20
1 Lee 35
1 Lee 40
1 Edith 5
2 Lana 3
2 Reisha 50
每门课程都有多个学生,每一个分数,他们在一个月内从该课程中获得的分数都多。
我想要这样的结果:
CourseId StudentName Scores
--------- ------------- -------------
1 Gashio 10|20
1 Lee 35|40
1 Edith 5
2 Lana 3
2 Reisha 50
由于得分返回多个值,因此我希望它成为一列并以分号分隔。
我不确定是否应该在这里使用STRING_AGG?
答案 0 :(得分:4)
您需要STRING_AGG
和GROUP BY
SELECT course.CourseId,
student.StudentName,
STRING_AGG(Scores, ,'|') AS Scores
FROM course INNER JOIN
student ON student.StudentId = course.StudentId INNER JOIN
score ON score.studentId = student.StudentId
GROUP BY cource.CourseId,
student.StudentName
答案 1 :(得分:0)
使用string_agg()
和分隔符
select CourseId,StudentName,string_agg(Scores,'|') as scores
from tablename
group by CourseId,StudentName