2017-03-01 88 views
0

我有兩個查詢。返回班級平均數,最低成績和最高成績。第二個返回特定的學生結果。我試圖將這兩個查詢合併爲一個查詢,以便顯示具體的學生結果以及該班級的最小,最大和平均結果。我試過的任何東西都會導致錯誤。有沒有簡單的我失蹤?下面的兩個查詢:返回平均值以及特定行

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' 
+1

提供樣本數據和預期結果。目前還不清楚你想要輸出什麼。 –

回答

0

如果我理解正確的,你有兩個查詢始終只返回一個行(平均/最大/最小一個和學生一個細節)。如果你想在一個結果中「合併」它們,你所要做的就是使用這兩個查詢作爲內聯視圖並將它們加入到總是爲真的東西中,比如1 = 1。

所以:

select * from 
(
first query here 
) a 
join 
(
second query here 
) b 
on 1=1 

小心壽 - 確保查詢永遠只能返回一行,否則你會開始得到笛卡爾的產品和那些產生各種古怪的。

希望它有幫助

+0

有兩個模塊返回,因此每個查詢都有兩行。您的建議與鏈接的兩個查詢的返回值一起工作。但是,不是返回兩個結果,而是四個。具體的學生結果正在被複制。 – user4184963

+0

而不是使用1 = 1在我使用的a.ModuleTitle = b.ModuleTitle 這正是我需要的。謝謝您的幫助!! – user4184963

+0

@ user4184963很高興幫助! –