Я работаю над SQL-запросом, в котором максимальное значение Audit_Date пользователя не находится в диапазоне, так как в течение длительного времени они не использовали систему. Я попробовал это так:
SELECT DISTINCT
UserID
,max(Audit_Date)
FROM RV_USERS RV_USERS
INNER JOIN RV_AUDIT RV_AUDIT ON
RV_USERS.UserID=RV_AUDIT.UserID
group BY RV_USERS.UserID
AND --it doesn't like the "and" here
not exists(
select *
FROM RV_USERS RV_USERS
INNER JOIN RV_AUDIT RV_AUDIT ON ON RV_USERS.UserID=RV_AUDIT.UserID
where
Audit_Date not between '2019-05-29 00:00:00' and '10/29/2019'
)
Я пытался использовать не существует, как в примере , но это не работает в этом случае. Я получил неправильный синтаксис рядом с ключевым словом «И», прямо перед тем, как не существует. Мне нужно сделать из этого представление, так что я думаю, что переменные и временные таблицы отсутствуют. Он будет использоваться в подробном отчете и запланирован в Central Management Console.
** Update1: пробовал это для каждого ответа: ВЫБЕРИТЕ DISTINCT "RV_USERS". "UserID", "RV_AUDIT". "Audit_Date" FROM "RV_USERS "" RV_USERS "ВНУТРЕННИЙ РЕЙТИНГ" RV_AUDIT "" RV_AUDIT "ON" RV_USERS "." UserID "=" RV_AUDIT "." UserID "
group BY" RV_USERS "." UserID "," RV_AUDIT "."Audit_Date "
HAVING max (" RV_AUDIT "." Audit_Date ") <'2019-05-29 00:00:00' </p>
и" RV_USERS ".UserID = 'me'
Это возвращает меня с датами в мае, хотя я использую систему с мая. Я проверил это, удалив часть с максимальной датой и увидев, что мои даты идут на сегодня.
** Обновление 2: Попробовал это для другого ответа:
SELECT DISTINCT
"RV_USERS"."UserID"
,max("RV_AUDIT"."Audit_Date")
FROM "RV_USERS" "RV_USERS"
INNER JOIN "RV_AUDIT" "RV_AUDIT" ON "RV_USERS"."UserID"="RV_AUDIT"."UserID"
WHERE
not exists(
select *
FROM "RV_USERS" u2
INNER JOIN "RV_AUDIT" a2 ON u2."UserID"=a2."UserID"
where
a2."Audit_Date" not between '2019-05-27 00:00:00' and '10/31/2019'
)
group BY "RV_USERS"."UserID"
Это ничего не возвращает, но мызнаю, что есть менеджеры, которые не использовали систему.
** Обновление 3 за ответ:
SELECT DISTINCT
u."UserID"
,max(a."Audit_Date")
FROM "RV_USERS" u
INNER JOIN "RV_AUDIT" a ON u."UserID"=a."UserID"
WHERE
u.UserID not in(
select u2.UserID
FROM "RV_USERS" u2
INNER JOIN "RV_AUDIT" a2 ON u2."UserID"=a2."UserID"
where
a2."Audit_Date" between '2019-05-27 00:00:00' and '10/31/2019'
)
group BY u."UserID"