@ KevinKevin
Ваши объединения не являются хорошей практикой.Остерегайтесь "деления на нулевую ошибку", которую я добавил.
Вот пример в «обычном» SQL:
SELECT
Marks.Student_ID AS Year,
(
case when COUNT(case when Marks.Year_Taken = 1 then Marks.Student_ID else 0 end) <> 0
then SUM(
case when Marks.Year_Taken = 1 then Final_Mark else 0 end
) / COUNT(
case when Marks.Year_Taken = 1 then Marks.Student_ID else 0 end
) else 0 end
) AS Year_1_Marks,
(
case when COUNT(case when Marks.Year_Taken = 3 then Marks.Student_ID else 0 end) <> 0
then SUM(
case when Marks.Year_Taken = 3 then Final_Mark else 0 end
) / COUNT(
case when Marks.Year_Taken = 3 then Marks.Student_ID else 0 end
) else 0 end
) AS Year_3_Marks
FROM
Marks
INNER JOIN Students ON Students.Student_ID = Marks.Student_ID
GROUP BY
Marks.Student_ID
Вот пример в «Access» SQL:
SELECT
Marks.Student_ID AS Year,
Iif ( COUNT(Iif( Marks.Year_Taken = 1 ,Marks.Student_ID, 0))=0,0,
SUM(Iif ( Marks.Year_Taken = 1,Final_Mark, 0) ) / COUNT(Iif( Marks.Year_Taken = 1 , Marks.Student_ID, 0))
) AS Year_1_Marks,
Iif ( COUNT(Iif( Marks.Year_Taken = 3 , Marks.Student_ID, 0))=0,0,
SUM(Iif ( Marks.Year_Taken = 3 Final_Mark, 0) ) / COUNT(Iif( Marks.Year_Taken = 3 , Marks.Student_ID, 0))
) AS Year_3_Marks,
FROM
Marks
INNER JOIN Students ON Students.Student_ID = Marks.Student_ID
GROUP BY
Marks.Student_ID