Sql From子句不与3类似,但与2有效

Sql From子句不与3类似,但与2有效,sql,ms-access,join,Sql,Ms Access,Join,我在MS Access中有一个令人恼火的报告,我必须查询一个图表 问题 我的查询使用3个几乎相同的子查询,只是使用不同的WHERE子句将值输出到3列中的每一列。当我使用其中两个子查询时,它工作得很好——但是,一旦添加第三个子查询,它就会给我一个错误 迄今为止的代码: 给出了错误消息: 查询表达式“AllOpps.WeekNum=NewInv.WeekNo RIGHT JOIN”中缺少运算符的语法错误 选择格式[OppMovs Base]。日期时间,ww mmm yy为周,总和[OppMovs B

我在MS Access中有一个令人恼火的报告,我必须查询一个图表

问题 我的查询使用3个几乎相同的子查询,只是使用不同的WHERE子句将值输出到3列中的每一列。当我使用其中两个子查询时,它工作得很好——但是,一旦添加第三个子查询,它就会给我一个错误

迄今为止的代码:

给出了错误消息:

查询表达式“AllOpps.WeekNum=NewInv.WeekNo RIGHT JOIN”中缺少运算符的语法错误 选择格式[OppMovs Base]。日期时间,ww mmm yy为周,总和[OppMovs Base]。值为总计,ValFormat[OppMovs Base]。日期时间,ww为周 来自[奥普莫夫斯基地] 其中年份[OppMovs Base].[DateTime]>=202

谁能告诉我这是为什么?我试过区分变量名、不同类型的联接等等,但实际上没有任何线索

非常感谢。

您不需要所有这些正确的连接。只需使用条件聚合。这与您的右连接所做的基本相同:

SELECT Format([OppMovs (Base)].DateTime,"ww mmm yy") AS Week, 
       Sum([OppMovs (Base)].VALUE) AS TotalOpps,
       SUM(IIF([OppMovs (Base)].To LIKE '*1 Investigate*', [OppMovs (Base)].VALUE), 0) as Total_Investigate,
       SUM(IIF([OppMovs (Base)].To LIKE '*7 Client*', [OppMovs (Base)].VALUE), 0) as Total_Client
       Val(Format([OppMovs (Base)].DateTime,"ww")) AS WeekNum 
FROM [OppMovs (Base)] 
WHERE Year([OppMovs (Base)].[DateTime]) >= 2020 AND
      ([OppMovs (Base)].To LIKE '*1 Investigate*' OR
       [OppMovs (Base)].To LIKE '*2 Research*' OR
       [OppMovs (Base)].To LIKE '*3 Proposal*' OR
       [OppMovs (Base)].To LIKE '*4 Test*' OR
       [OppMovs (Base)].To LIKE '*5 Evaluate*' OR
       [OppMovs (Base)].To LIKE '*6 Implement*' OR
       [OppMovs (Base)].To LIKE '*7 Client*'
      )
GROUP BY Format([OppMovs (Base)].DateTime, "ww mmm yy"), 
         Val(Format([OppMovs (Base)].DateTime,"ww")) 

在MS Access中,您需要在每个后续联接周围使用括号,如next:

select ...
from 
((t1
    join t2 on ...)
    join t3 on ...)
    join t4 on ...

对不起,我不完全明白?那么,我应该从AllOpps.WeekNum=NewInv.WeekNo RIGHT JOIN上的行NewInv中删除哪个括号?例如,如果不删除括号,则添加一些-选择。。。从选择格式。。。和NewInv ON AllOpps.WeekNum=NewInv.WeekNo右键连接例如Gordon,你是个天才。非常感谢。
select ...
from 
((t1
    join t2 on ...)
    join t3 on ...)
    join t4 on ...