如何解决左联接子查询错误?

时间:2018-12-10 21:00:35

标签: sql ms-access

在MS-Access中,我试图连接三个表。第三个表是从旨在汇总日期的子查询中创建的,因为与第一个表对齐时,我不想每天都有多个记录。

当我输入左联接子查询时,出现此错误:

  

该字段太小,无法接受您尝试处理的数据量   加。尝试插入或粘贴较少的数据。

我已经单独运行了子查询,它返回了大约19,000条记录。这比实际表小得多。如果我使用实际表,则查询工作正常,但当第三张表上每天有多个条目时,它会包含重复记录。

SELECT
  SUM([ACD Calls]),
  (SUM([Avg ACD Time]*[ACD Calls])/SUM([ACD Calls]))/86400,
  (SUM([Avg ACW Time]*[ACD Calls])/SUM([ACD Calls]))/86400,
  ((SUM([Hold Time])/SUM([ACD Calls])))/86400,
  ((SUM([Avg ACD Time]*[ACD Calls])
    + SUM([Avg ACW Time]*[ACD Calls]))/SUM([ACD Calls]))/86400,
  SUM([Time Adhering])/SUM([Total Time Scheduled]),
  SUM([SS])/SUM([SO])
FROM
(
  (
    [GroupSumDaily]
    LEFT JOIN Adherence_WKLY ON (GroupSumDaily.[Day] = Adherence_WKLY.[Day])
    AND (GroupSumDaily.Agent = Adherence_WKLY.Agent)
  )
  LEFT JOIN
  (
    SELECT Evaluation_List.[Agent],
    Evaluation_List.Recording_Date,
    SUM(Evaluation_List.[Score]) as SS,
    SUM(Evaluation_List.[Out of]) as SO
    From Evaluation_List
    Group By Evaluation_List.[Recording_Date],
    Evaluation_list.[Agent]
  )
  as Evals ON (GroupSumDaily.[Day] = Evals.[Recording_Date])
  AND (GroupSumDaily.Agent = Evals.Agent)
)
WHERE
(
  [GroupSumDaily].[Agent] = "LastName FirstName"
  AND Month([GroupSumDaily].[Day]) =1
  AND Year([GroupSumDaily].[Day]) =2018
  AND [GroupSumDaily].[Day] > #2/23/2015#
)

2 个答案:

答案 0 :(得分:0)

您似乎没有要查询的“主”表。
我会尝试删除FROM语句后的前两个开括号(及其等效的右括号)。
如果仍不能解决问题,请尝试将整个子查询移到单独的查询中,然后从结果中进行选择...

答案 1 :(得分:0)

原来,子查询字段自动限制为50个字符,这是问题的根源。当我将返回值限制为LEFT([Agent],50)时,错误消失了。有没有一种方法可以设置字符长度是子查询字段?

另一个奇怪的事情是,我的所有字段实际上都不超过50个字符...当我运行Select [Agent]时LEN([Agent])> = 50,它仅返回1条记录,这是“底部的新记录。我确认它完全空白,没有空格或制表符。非常令人困惑。