Приведенный ниже запрос возвращает записи, в которых DATE_SENT_TO_REGISTRATIONS находится между двумя датами: -

SELECT TBLBROKERAGESNEW.BROKERAGE_NAME, Count(TBLBROKERAGESNEW.BROKERAGE_NAME) AS CountOfBROKERAGE_NAME
FROM TBLQUOTESNEW LEFT JOIN TBLBROKERAGESNEW ON TBLQUOTESNEW.BROKERAGE_ID = TBLBROKERAGESNEW.ID
WHERE (((TBLQUOTESNEW.DATE_SENT_TO_REGISTRATIONS)>=#6/1/2017#) AND ((TBLQUOTESNEW.DATE_SENT_TO_REGISTRATIONS)<=#6/30/2017#))
GROUP BY TBLBROKERAGESNEW.BROKERAGE_NAME
ORDER BY Count(TBLBROKERAGESNEW.BROKERAGE_NAME) DESC;

Можно ли настроить этот счет так, чтобы он учитывал только брокеров, у которых никогда не было даты отправки регистрации до даты начала (в данном случае 1 июня) - так что по сути новые брокеры в этом месяце?

0
bd528 17 Июл 2017 в 13:53
Итак, минимум DATE_SENT_TO_REGISTRATIONS должен быть> = 1 июня?
 – 
Darren Bartrup-Cook
17 Июл 2017 в 15:01
Да все верно
 – 
bd528
17 Июл 2017 в 15:04

1 ответ

Лучший ответ

HAVING - это предложение WHERE для сгруппированных записей.
Если вы попытаетесь сказать WHERE Min(TBLQUOTESNEW.DATE_SENT_TO_REGISTRATIONS)>=#6/1/2017#, вы получите сообщение об ошибке, поскольку у вас не может быть агрегатных (MIN) функций в предложении WHERE.

Это должно работать:

SELECT      TBLBROKERAGESNEW.BROKERAGE_NAME
            , Count(TBLBROKERAGESNEW.BROKERAGE_NAME) AS CountOfBROKERAGE_NAME
FROM        TBLBROKERAGESNEW INNER JOIN TBLQUOTESNEW ON TBLBROKERAGESNEW.ID = TBLQUOTESNEW.BROKERAGE_ID
GROUP BY    TBLBROKERAGESNEW.BROKERAGE_NAME
HAVING      Min(TBLQUOTESNEW.DATE_SENT_TO_REGISTRATIONS)>=#6/1/2017#

Чтобы ограничить верхний предел дат июнем, добавьте предложение WHERE (перед GROUP BY):
WHERE TBLQUOTESNEW.DATE_SENT_TO_REGISTRATIONS<#7/1/2017#

2
Darren Bartrup-Cook 17 Июл 2017 в 15:28