以下是我的查询:
SELECT
UT.AgentName AS [Agent Name],
UT.TeamName AS Team,
Format(Now(),"Short Date") AS [As Of],
Sum(I.RegPointValue) AS Points
FROM
(SELECT
UU.AgentID,
(Nz(UU.LastName,'')+", "+Nz(UU.FirstName,'')) AS AgentName ,
TT.TeamName
FROM
Users AS UU
INNER JOIN
Teams AS TT
ON UU.TeamID = TT.TeamID) AS UT
LEFT JOIN
(InfractionTypes AS I
INNER JOIN
(DateCodes AS D
INNER JOIN
AquiredInfractions AS AI
ON D.DateID = AI.DateID)
ON I.InfractionID = AI.InfractionID)
ON UT.AgentID = AI.AgentID
WHERE (((D.DateValue)>=#4/1/2014#))
GROUP BY UT.TeamName, UT.AgentName, I.RegPointValue;这样做的目的是总结一个人将得到的所有分数,取决于他们所收到的出勤违规情况。如果我将LEFT JOIN更改为INNER JOIN,则查询有效,但只返回收到出勤违规行为的人员的姓名。但我想要的是,它返回所有的人的名字,并有0作为他们的积分,如果他们没有收到任何。
当我试图保存或执行时,我得到的错误是Join expression not supported。在过去的几个小时里,我一直试图通过扰乱连接的顺序来使它发挥作用,但没有结果。使用,2013年。
发布于 2014-06-21 02:15:07
你漏掉了一些化名。
每个用作表的内部查询都必须给出别名,在连接它们时,必须使用别名,并且在联接条件下只能使用选定的列。
例如,在这些行中添加别名:
...
ON D.DateID = AI.DateID) AS SOMETHING_1
ON I.InfractionID = AI.InfractionID) AS SOMETHING_2等
https://stackoverflow.com/questions/24337630
复制相似问题