学生桌
student_id student_name
1 John
2 Mary
成绩表
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
答案 0 :(得分:0)
您正在尝试将演示文稿与从数据库表中检索数据混合在一起。可以通过游标在sql中遍历结果集,但不建议这样做。您最好使用两个查询提取所需的数据,然后再使用您选择的语言进行打印。
答案 1 :(得分:0)
如果要在SQL环境中执行此操作,则取决于您使用的数据库管理系统。
例如,如果您使用的是Transact SQL,则可以尝试查看this link。
通常,这种循环和交互是通过与SQL DB耦合的编程语言完成的。
无论如何,如果您真的想在SQL中执行此操作,则应该查看存储过程和游标。