Sql server 正在与Sql Server查询进行斗争-连接

Sql server 正在与Sql Server查询进行斗争-连接,sql-server,join,Sql Server,Join,我试图构建一个查询,从3个表中提取数据并填充名为#TempStudentAcademics的表,该表在下面的屏幕截图中可见: 我只是没有得到正确的查询结构,并遇到了一个错误,现在这可能是由于我缺乏加入的经验,但我仍然尝试 我需要从以下表格中提取数据: 学生 测试 学生成绩 我尝试了多个scenerio,但我最困难的是获取每个学生各自测试结果的行数据,并将其输入到一个单独的测试列中 以下是我尝试过但失败的众多变体之一: SELECT STUDENTS.STUDENT_ID, isnul

我试图构建一个查询,从3个表中提取数据并填充名为#TempStudentAcademics的表,该表在下面的屏幕截图中可见:

我只是没有得到正确的查询结构,并遇到了一个错误,现在这可能是由于我缺乏加入的经验,但我仍然尝试

我需要从以下表格中提取数据:

学生

测试

学生成绩

我尝试了多个scenerio,但我最困难的是获取每个学生各自测试结果的行数据,并将其输入到一个单独的测试列中

以下是我尝试过但失败的众多变体之一:

  SELECT STUDENTS.STUDENT_ID, isnull(STUDENTS.STUDENT_FIRSTNAME,'') +' '+ isnull(STUDENTS.STUDENT_SURNAME,''), STUDENT_SCORES.STUDENT_SCORE , AVG(STUDENT_SCORES.STUDENT_SCORE) FROM 
        (select * from STUDENT_SCORES) STUDENT_SCORES
        inner join
        (select * from TESTS)TESTS
        on STUDENT_SCORES.TEST_ID=TESTS.TEST_ID
        inner join
        (select * from SUBJECTS) SUBJECTS
        on TESTS.SUBJECT_ID= SUBJECTS.SUBJECT_ID
        inner join
        (Select * from STUDENTS) STUDENTS
        on STUDENT_SCORES.STUDENT_ID=STUDENTS.STUDENT_ID

您可以使用GroupBy轻松获得每个测试的测试总数和平均值。然而,学生总平均数有点棘手。您希望如何计算该列

两件事,首先,这看起来很像家庭作业,人们会帮你做家庭作业,但不会帮你做。此外,表格和数据的图像几乎毫无价值。我会问,为什么要加入子查询而不是表?这只会让事情变得更加复杂。当你遇到错误时,你应该分享错误信息,仅仅说你遇到了错误是没有帮助的。@SeanLange。谢谢你的评论,但只是想提醒一下-截图显示的是Tbl数据。这也不是家庭作业,这是一个项目,我正在自己的工作,以提高我的sql server知识。让别人为我做这件事根本就不难。我可以发布我花时间尝试的所有变体,但我认为一次失败的尝试就足够了。这是一次失败的尝试,但我们不知道您收到了什么错误消息。如果你不想有人发布答案,你想要什么作为回应?我建议先去掉子查询。只需连接到表。请仅将图像用于无法表示为文本或扩充文本的内容。无法搜索或剪切粘贴图像。包括带有图像的图例/图例和说明。使你的文章独立。请在代码问题中给出一个——剪切、粘贴和可运行的代码,加上所需的输出,再加上清晰的说明和解释。这包括您能给出的最少代码,即您显示为OK的代码,由您显示为not OK的代码扩展。(调试基础。)我想试着做一个平均值()在同一个学生ID下的所有分数。不确定这是否是最好的方法。这会让你得到数学平均值、英语平均值和科学平均值。我不知道你想对学生总平均值做什么。哦,我刚刚看到学生表中的学生平均值列。也许学生总平均数就是该栏的平均数?如果是这样,只需在该列上运行AVG()函数,就可以了。如果你需要我写剧本,请告诉我,但你可以从别人说的话开始。远离子查询,只使用联接。然后可以使用group by来运行avg()函数。