如何将三个具有多个值的表联接到另外两个表上

时间:2019-07-19 06:02:47

标签: sql google-cloud-spanner

例如。

我有三个单独的表:

  1. course表,其中包含CourseId,StudentId等
  2. student当然包含学生数据和StudentName
  3. 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?

2 个答案:

答案 0 :(得分:4)

您需要STRING_AGGGROUP 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