Как устранить ошибку подзапроса Left Join? - PullRequest
0 голосов
/ 11 декабря 2018

В 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 голосов
/ 12 декабря 2018

Оказывается, поля подзапросов автоматически ограничиваются 50 символами, и это было корнем проблемы.Когда я ограничил возврат до LEFT ([Агент], 50), ошибка исчезла.Есть ли способ установить длину символа в поле подзапроса?

Другие странные вещи: ни одно из моих полей на самом деле не превышало 50 символов ... когда я запускал, выберите [Агент] Где LEN ([Агент]))> = 50, он вернул только 1 запись, и это была «НОВАЯ» пустая запись снизу.Я подтвердил, что он полностью пустой, без пробелов и табуляции.Очень запутанно.

0 голосов
/ 11 декабря 2018

Похоже, у вас нет "основной" таблицы для запроса.
Я бы попытался удалить первые две открытые скобки после оператора FROM (и их эквивалентные закрывающие скобки.)
Если этоне исправить, попробуйте переместить весь подзапрос в отдельный запрос и выбрать из результатов ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...