Tsql 如何获取基于父查询作为单个结果返回的嵌套查询的平均值
这是过去几天我不得不处理的另一个问题。我有以下疑问:Tsql 如何获取基于父查询作为单个结果返回的嵌套查询的平均值,tsql,aggregate-functions,aggregate,Tsql,Aggregate Functions,Aggregate,这是过去几天我不得不处理的另一个问题。我有以下疑问: SELECT S.Name,S.Surname,S.Student_ID,S.StudentNumber,C.Course, B.Campus_Title,M.Module,SM.Percentage_Obtained,S.Days_Absent FROM Students S INNER JOIN Student_Courses SC ON SC.StudentID = S.ID INNER JOIN Courses_Template
SELECT S.Name,S.Surname,S.Student_ID,S.StudentNumber,C.Course, B.Campus_Title,M.Module,SM.Percentage_Obtained,S.Days_Absent
FROM Students S
INNER JOIN Student_Courses SC
ON SC.StudentID = S.ID
INNER JOIN Courses_Template C
ON C.ID = SC.courseID
INNER JOIN Branches B
ON B.ID = S.BranchID
INNER JOIN Student_Modules SM ON
SM.StudentID =S.ID
INNER JOIN Modules_Template M ON
M.ID = SM.ModuleID
SELECT S.Name,S.Surname,S.Student_ID,S.StudentNumber,C.Course, B.Campus_Title,M.Module,SM.Percentage_Obtained,S.Days_Absent, SM2.AvgPercentage_Obtained
FROM Students S
INNER JOIN Student_Courses SC
ON SC.StudentID = S.ID
INNER JOIN Courses_Template C
ON C.ID = SC.courseID
INNER JOIN Branches B
ON B.ID = S.BranchID
INNER JOIN Student_Modules SM ON
SM.StudentID =S.ID
INNER JOIN Modules_Template M ON
M.ID = SM.ModuleID
OUTER APPLY (SELECT AVG(Percentage_Obtained) AvgPercentage_Obtained
FROM Student_Modules
INNER JOIN Modules_Template ON Modules_Template.ID = Student_Modules.ModuleID
WHERE Student_Modules.Module = M.Module) SM2
问题是我想重写查询以获得如下计算结果:
SELECT S.Name,S.Surname,S.Student_ID,S.StudentNumber,C.Course, B.Campus_Title,M.Module,SM.Percentage_Obtained,S.Days_Absent,
(SELECT AVG(Percentage_Obtained)
FROM Student_Modules
INNER JOIN Courses_Template
ON Courses_Template.ID = Student_Modules.CourseID
INNER JOIN Modules_Template
ON Courses_Template.ID = Modules_Template.CourseID
WHERE Modules_Template.Module= M.Module)[AS Class Average]
FROM Students S
INNER JOIN Student_Courses SC
ON SC.StudentID = S.ID
INNER JOIN Courses_Template C
ON C.ID = SC.courseID
INNER JOIN Branches B
ON B.ID = S.BranchID
INNER JOIN Student_Modules SM ON
SM.StudentID =S.ID
INNER JOIN Modules_Template M ON
M.ID = SM.ModuleID
模块的原始值为(提取)
我希望从第二个查询中得到以下结果
M.Modules AVG(Percentage_Obtained) (SubQuery's Average)
Module 1 99 97
Module 2 98 60
Module 3 94 96
Module 1 94 97
Module 2 22 60
Module 3 100 96
M.Modules AVG(Percentage_Obtained) (SubQuery's Average)
Module 1 99 84
Module 2 98 84
Module 3 94 84
Module 1 94 84
Module 2 22 84
Module 3 100 84
然而,它给了我完全不同的东西
我希望从第二个查询中得到以下结果
M.Modules AVG(Percentage_Obtained) (SubQuery's Average)
Module 1 99 97
Module 2 98 60
Module 3 94 96
Module 1 94 97
Module 2 22 60
Module 3 100 96
M.Modules AVG(Percentage_Obtained) (SubQuery's Average)
Module 1 99 84
Module 2 98 84
Module 3 94 84
Module 1 94 84
Module 2 22 84
Module 3 100 84
也许有人能从某处发现我的错误吗?我需要在一个查询中包含所有这些字段,因为我必须对其进行报告。子查询的结果至关重要
这几乎就像我需要它一样(但对于模块的所有重复出现都是动态的):
您可以尝试以下查询:
SELECT S.Name,S.Surname,S.Student_ID,S.StudentNumber,C.Course, B.Campus_Title,M.Module,SM.Percentage_Obtained,S.Days_Absent
FROM Students S
INNER JOIN Student_Courses SC
ON SC.StudentID = S.ID
INNER JOIN Courses_Template C
ON C.ID = SC.courseID
INNER JOIN Branches B
ON B.ID = S.BranchID
INNER JOIN Student_Modules SM ON
SM.StudentID =S.ID
INNER JOIN Modules_Template M ON
M.ID = SM.ModuleID
SELECT S.Name,S.Surname,S.Student_ID,S.StudentNumber,C.Course, B.Campus_Title,M.Module,SM.Percentage_Obtained,S.Days_Absent, SM2.AvgPercentage_Obtained
FROM Students S
INNER JOIN Student_Courses SC
ON SC.StudentID = S.ID
INNER JOIN Courses_Template C
ON C.ID = SC.courseID
INNER JOIN Branches B
ON B.ID = S.BranchID
INNER JOIN Student_Modules SM ON
SM.StudentID =S.ID
INNER JOIN Modules_Template M ON
M.ID = SM.ModuleID
OUTER APPLY (SELECT AVG(Percentage_Obtained) AvgPercentage_Obtained
FROM Student_Modules
INNER JOIN Modules_Template ON Modules_Template.ID = Student_Modules.ModuleID
WHERE Student_Modules.Module = M.Module) SM2
如果可以,我现在就吻你!!!!非常感谢。你救了我的命。我会尽快申请的,我不知道it@EonRustedduPlessis-没有必要那样做;-)。我很高兴这个答案起作用了。它起作用了。只是,Student_Modules.Module=M.Module的最后一行应该是Student_Modules.ModuleID=M.IDModuleID是Modules.ID的外键