У меня есть свалка билетов Remedy, которая включает отправленную дату и решенную дату. Что мне нужно сделать, так это рассчитать для каждой даты, на которую отправлен хотя бы один билет:
- Количество билетов, представленных на $ date
- Количество разрешенных билетов на дату $
- Количество билетов все еще открыто в начале бизнеса на $ date
У меня есть запрос, который возвращает меня к пунктам 1 и 2, но я застрял на 3. Мне в основном нужен способ посмотреть на $ date из подзапросов для 1 и 2 и использовать его как мое предложение WHERE для подзапрос для 3.
Это мой запрос:
SELECT xDate, sTot, cTot, oTot FROM
(
(
(
SELECT xDate, COUNT(*) AS sTot
FROM (
SELECT FORMAT(SubmitDate, "mm/dd/yyyy") AS xDate FROM tblOpenINC
UNION ALL
SELECT FORMAT(SubmitDate, "mm/dd/yyyy") AS xDate FROM tblClosedINC
) GROUP BY xDate
) AS sub
INNER JOIN
(
SELECT FORMAT(LastResolvedDate, "mm/dd/yyyy") AS yDate, COUNT(*) AS cTot
FROM tblClosedINC
GROUP BY FORMAT(LastResolvedDate, "mm/dd/yyyy")
) AS res
ON res.yDate = sub.xDate
)
INNER JOIN
(
SELECT FORMAT(SubmitDate, "mm/dd/yyyy") AS zDate, COUNT(*) AS oTot
FROM tblClosedINC
WHERE FORMAT(SubmitDate, "mm/dd/yyyy") < DateValue(xDate)
GROUP BY FORMAT(SubmitDate, "mm/dd/yyyy")
) AS opn
ON opn.zDate = sub.xDate
)
ORDER BY DateValue(xDate) ASC
Последний подзапрос не работает, поскольку он не знает, что такое xDate (дата из первого подзапроса).
Если мне придется делать это с VBA, я это сделаю, но я действительно хотел бы иметь возможность делать все это с помощью SQL, чтобы исходные данные были легко доступны для выгрузки в Excel и еще много чего.
Кроме того, для пояснения: у меня есть отдельные таблицы для заявок, которые были в настоящее время открыты или в настоящее время не открыты, когда я получил дамп из Remedy, следовательно, UNION в первом подзапросе. Кроме того, все поля даты Remedy имеют временную метку, поэтому функция FORMAT удаляет временную метку.