Sql From子句不与3类似,但与2有效
我在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 谁能告诉我这是为什么?我试过区分变量名、不同类型的联接等等,但实际上没有任何线索 非常感谢。您不需要所有这些正确的连接。只需使用条件聚合。这与您的右连接所做的基本相同: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
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 ...