Как написать запрос для выбора дат из одной таблицы, которые являются ближайшими, но меньше, чем даты в другой таблице - PullRequest
0 голосов
/ 11 июня 2019

У меня есть 2 таблицы в моей базе данных Access. В одной таблице есть список звонков и время звонков:

|Start Time         |Agent    |
|6/7/2019 9:30:47 AM|Abandoned|
|6/7/2019 3:09:11 PM|Abandoned|
|6/7/2019 9:12:49 AM|Abandoned|
|6/7/2019 8:44:22 AM|Abandoned|
|6/7/2019 8:13:54 AM|Abandoned|
|6/7/2019 7:25:48 AM|Abandoned|

В моей другой таблице есть список пользователей и когда они изменили статус своего телефона:

|Agent         |StartTime    |Status           |
|Doe, John     |6/7/2019 7:09|Special          |
|Zombie, Rob   |6/7/2019 7:16|Available        |
|Buffett, Jimmy|6/7/2019 7:18|Training         |
|Buffett, Jimmy|6/7/2019 7:20|Available        |
|Zombie, Rob   |6/7/2019 7:27|Tickets          |
|Zombie, Rob   |6/7/2019 7:29|Available        |
|Buffett, Jimmy|6/7/2019 8:00|Training         |
|Zombie, Rob   |6/7/2019 8:01|Tickets          |
|Buffett, Jimmy|6/7/2019 8:01|Unscheduled Break|
|Doe, Jane     |6/7/2019 8:10|Unscheduled Break|
|Doe, Jane     |6/7/2019 8:14|Available        |
|Buffett, Jimmy|6/7/2019 8:16|Available        |
|Zombie, Rob   |6/7/2019 8:29|Available        |
|Zombie, Rob   |6/7/2019 8:32|Tickets          |
|Lee, Amy      |6/7/2019 8:50|Unscheduled Break|

Мне хотелось бы узнать, в каком состоянии находился каждый агент на момент отказа от вызова.

Например: оставленный звонок в 7:25:48 будет:

|Agent         |StartTime    |Status           |
|Doe, John     |6/7/2019 7:09|Special          |
|Zombie, Rob   |6/7/2019 7:16|Available        |
|Buffett, Jimmy|6/7/2019 7:20|Available        |

Заброшенный звонок в 8:13:54 будет:

|Agent         |StartTime    |Status           |
|Doe, John     |6/7/2019 7:09|Special          |
|Zombie, Rob   |6/7/2019 8:01|Tickets          |
|Buffett, Jimmy|6/7/2019 8:01|Unscheduled Break|
|Doe, Jane     |6/7/2019 8:10|Unscheduled Break|

Что касается жизни, я не могу понять, с чего начать.

Заранее спасибо!

1 Ответ

0 голосов
/ 11 июня 2019

Вы можете объединить две таблицы вместе, а затем получить запись, время которой соответствует максимальному времени начала с или до прекращенного вызова:

select t1.*, t2.*
from table1 as t1,  -- only because MS Access does not support CROSS JOIN
     table2 as t2
where t2.starttime = (select max(tt2.starttime)
                      from table2 as tt2
                      where tt2.agent = t2.agent and
                            tt2.starttime <= t1.starttime
                     );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...