学生表
student_id student_name
1 John
2 MaryGrades表
student_id year grade_level school Course Mark
1 2015 10 Smith High Algebra 95
1 2015 10 Smith High English 96
1 2016 11 Smith High Geometry 85
1 2016 11 Smith High Science 88
2 2015 10 Smith High Algebra 98
2 2015 10 Smith High English 93
2 2016 11 Smith High Geometry 97
2 2016 11 Smith High Science 86我试图展示每一年的成绩,以及学生在成绩中上了什么课。
所以我要寻找的最终输出是这样的:
[student_id1] [year1] [grade1] [school1]
[course1] [mark1]
[course2] [mark2]
[course3] [mark3]...
[student_id1] [year2] [grade2] [school1]
[course1] [mark1]
[course2] [mark2]
[course3] [mark3]...
[student_id2] [year1] [grade1] [school1]
[course1] [mark1]
[course2] [mark2]
[course3] [mark3]...这将全部放在一列/一行中。所以在这个特定的例子中,这将是我的结果:
1 2015 10 Smith High
Algebra 95
English 96
1 2016 11 Smith High
Geometry 85
Science 88
2 2015 10 Smith High
Algebra 98
English 93
2 2016 11 Smith High
Geometry 97
Science 86因此,每当学生id、年级、年级或学校名称发生变化时,我都会有一行代码来处理,并遍历该组中的课程。所有这些都在一列/一行中。
这就是我到目前为止所拥有的,但我不确定如何才能正确地循环每个小组的课程和成绩。如果能把我引向正确的方向,我将不胜感激。
select s.student_id + '' + year + '' + grade_level + '' + school
from students
join grades on students.student_id = grades.student_id发布于 2020-01-12 16:58:01
如果您想在您的SQL环境中执行此操作,则取决于您正在使用的数据库管理系统。
例如,如果使用的是Transact SQL,则可以尝试查看this link。
通常,这种循环和交互是在与SQL DB耦合的编程语言中完成的。
无论如何,如果您真的想在SQL中做到这一点,就应该看看存储过程和游标。
发布于 2020-01-12 16:43:28
您正在尝试将表示与从数据库表中检索数据混合在一起。在sql中循环遍历结果集可以通过游标实现,但这并不可取。更好的做法是使用两个查询提取所需的数据,然后使用您选择的语言打印。
https://stackoverflow.com/questions/59701343
复制相似问题