我有两个问题。一个返回班级平均,最低结果和最高结果。第二个返回特定学生的结果。我试图将两个查询放在一个查询中,以便显示特定的学生结果以及该课程的最小,最大和平均结果。我尝试过的任何内容都会导致错误。我有什么简单的遗失吗?以下两个问题:
SELECT Module.ModuleTitle, Module.ModuleDescription,
MIN(StudentModule.StudentGradeFinal) as lowres,
MAX(StudentModule.StudentGradeFinal) as topres,
AVG(CAST(StudentModule.StudentGradeFinal as DECIMAL(9,2))) as averageres
FROM StudentModule
join Module on StudentModule.ModuleId = Module.ModuleId
WHERE Semester = 'Spring'
AND Module.ModuleId in
(
SELECT Module.ModuleId FROM Module
Join StudentModule on Module.ModuleId = StudentModule.ModuleId
Where StudentId = '40104002'
)
GROUP BY Module.ModuleTitle, Module.ModuleDescription
SELECT Module.ModuleTitle, Module.ModuleDescription, StudentGradeFinal
FROM StudentModule
join Module on StudentModule.ModuleId = Module.ModuleId
WHERE Semester = 'Spring' AND StudentModule.StudentId = '40104002'
答案 0 :(得分:0)
如果我理解正确,你有两个查询总是只返回一行(平均/最小/最大一个,学生详细一个)。如果你想在一个结果中“合并”它们,你所要做的就是使用两个查询作为内联视图,并将它们连接到一直是真的,比如1 = 1.
所以:
select * from
(
first query here
) a
join
(
second query here
) b
on 1=1
小心 - 确保查询只返回一行,否则你将开始获得笛卡儿产品,并产生各种奇怪的东西。
希望有所帮助