Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql ms access中的语法错误(缺少运算符)_Sql_Ms Access - Fatal编程技术网

Sql ms access中的语法错误(缺少运算符)

Sql ms access中的语法错误(缺少运算符),sql,ms-access,Sql,Ms Access,我试图使用下面的查询,但是它表示缺少运算符和语法错误。此问题与ms access有关 select s.student_id, e.average_second_year_marks, e.average_third_year_marks, e.overall_marks from students s join ( select student_id, avg(case when program_year_when_enrolled = 'Second' then marks_ob

我试图使用下面的查询,但是它表示缺少运算符和语法错误。此问题与ms access有关

select s.student_id, e.average_second_year_marks, e.average_third_year_marks, e.overall_marks
from students s
join
(
  select student_id,
    avg(case when program_year_when_enrolled = 'Second' then marks_obtained end)
      as average_second_year_marks,
    avg(case when program_year_when_enrolled = 'Third' then marks_obtained end)
      as average_third_year_marks,
    (
     (sum(case when program_year_when_enrolled = 'Second' then marks_obtained end) * 1.0) +
     (sum(case when program_year_when_enrolled = 'Third' then marks_obtained end) * 2.0)
    ) / 3.0 as overall_marks
  from enrollment
  group by student_id
) e on e.student_id = s.student_id
where s.course_current_status = 'Graduated-2017'

等效的MS Access查询更像这样:

select s.student_id, e.average_second_year_marks,
       e.average_third_year_marks, e.overall_marks
from students as s inner join
     (select student_id,
             avg(iif(program_year_when_enrolled = "Second", marks_obtained, NULL)) as average_second_year_marks,
             avg(iif(program_year_when_enrolled = "Third", marks_obtained, NULL)) as average_third_year_marks
             (1.0 * avg(iif(program_year_when_enrolled = "Second", marks_obtained, NULL)) +
              2.0 * avg(iif(program_year_when_enrolled = "Third", marks_obtained, NULL)) 
             ) / 3.0 as overall_marks
     from enrollment
     group by student_id
    ) as e 
    on e.student_id = s.student_id
where s.course_current_status = "Graduated-2017";

如果这是关于Microsoft Access的,那么为什么要标记MySQL和Postgres呢?我取下了标签。请仅添加相关的标记。MS Access不支持“CASE”语句,您需要将它们转换为
iif
语句。它在join子句中表示语法错误,但当我使用另一个join(如左join或外join)时,它会在join操作中表示语法错误。你能帮我做些什么吗。