Sql-Server
兩個聚合子查詢不會執行
我在下面遇到問題,我需要對相關子查詢中的兩列進行平均,但我無法讓它工作,我如何讓兩個聚合子查詢執行然後通過外部查詢?我什至不確定我是否走在正確的道路上,所以任何指導表示讚賞。
問題:使用相關查詢顯示所有講師的 ID、姓名和平均考試和課程權重,並確保所有列都有合適的標題。研究使用 ISNULL 函式在講師不教授任何模組的情況下產生合適的輸出。
SELECT l.StaffID, l.FirstName, l.Surname, m.ModuleDescription FROM dbo.Lecturer as l RIGHT OUTER JOIN dbo.Module as m ON l.StaffID = m.ModuleConvenor WHERE m.ExamWeight = SELECT AVG(m.ExamWeight) AS 'Avg ExWeight' FROM dbo.Module as m2 WHERE m2.ModuleConcenor = l.StaffID OR m2.ModuleConvenor IS NULL) WHERE (SELECT AVG(m.CWWeight) AS 'Avg CWWeight' FROM dbo.Module as m3 WHERE m3.ModuleConcenor = l.StaffID OR m3.ModuleConvenor IS NULL)
試試這個,它應該可以幫助你朝著正確的方向前進。
SELECT l.StaffID, l.FirstName, l.Surname, m.ModuleDescription FROM dbo.Lecturer as l RIGHT OUTER JOIN dbo.Module as m ON l.StaffID = m.ModuleConvenor WHERE m.ExamWeight = ( SELECT AVG(m2.ExamWeight) AS 'Avg ExWeight' FROM dbo.Module as m2 WHERE m2.ModuleConcenor = l.StaffID OR m2.ModuleConvenor IS NULL) AND m.CWWeight = ( SELECT AVG(m3.CWWeight) AS 'Avg CWWeight' FROM dbo.Module as m3 WHERE m3.ModuleConcenor = l.StaffID OR m3.ModuleConvenor IS NULL)
我做了以下
- 更新了 where 子句語法
- 將聚合函式拼寫錯誤從 AVE 更新為 AVG
- 更新了您在兩個子查詢中的聚合函式中使用的別名
您可能需要發布一些範例數據和表格 ddl 資訊。我不清楚如何根據您的查詢連接模組和講師表。這個答案有助於糾正你的語法,它可能不是你想要實現的完整解決方案。