У меня проблема с успешным завершением (выполнением) запроса к отдельной таблице в Access 2013 с использованием SQL для выполнения Datediff для последовательных / последовательных строк временных отметок, которые отслеживают изменения статуса в билетах, проходящих через нашу систему создания билетов.
Таблица с названием: dbo_Master3_FieldHistory, имеет поле, которое отслеживает метки времени каждый раз, когда меняется статус заявки.К сожалению, он включает в себя только 1 временную метку на изменение, что означает, что по сути он не имеет вторичной временной метки для повторного изменения статуса, поэтому мне нужно запустить DateDiff для расчета AGE для билетов на основе статуса.
Я нашел правдоподобное решение для этого в StackOverflow, ссылка на который приведена ниже.Когда я пытался реализовать это решение, как и с небольшими изменениями, включая корректировки для фильтрации старых данных и определенных полей, оно просто замораживает мою программу Access и никогда не прерывалось (приходится принудительно закрывать Access)
Дата Разница между последовательными строками
'Это базовый код, перенесенный из связанного решения StackOverflow для соответствия полям этой таблицы (как я полагал)
SELECT T.mrID, T.mrSEQUENCE, T.mrUSERID, T.mrFIELDNAME, T.mrNEWFIELDVALUE, T.mrOLDFIELDVALUE, T.mrTIMESTAMP, T.mrNextTIMESTAMP, DateDiff("s",T.mrTIMESTAMP, T.mrNextTIMESTAMP) AS STATUSTIME
FROM (
SELECT T1.mrID, T1.mrSEQUENCE, T1.mrUSERID, T1.mrFIELDNAME, T1.mrNEWFIELDVALUE, T1.mrOLDFIELDVALUE, T1.mrTIMESTAMP,
(SELECT MIN(mrTIMESTAMP)
FROM dbo_MASTER3_FIELDHISTORY AS T2
WHERE T2.mrID = T1.mrID
AND T2.mrTIMESTAMP > T1.mrTIMESTAMP
) As mrNextTIMESTAMP
FROM dbo_MASTER3_FIELDHISTORY AS T1
) AS T
' Этокод, который я хотел использовать, чтобы учесть фильтрацию двух конкретных полей, ограничивая данные билетами (mrID) новее 01.01.2008 и только теми, где mrFIELDNAME имеет значение mrSTATUS
SELECT T.mrID, T.mrSEQUENCE, T.mrUSERID, T.mrFIELDNAME, T.mrNEWFIELDVALUE, T.mrOLDFIELDVALUE, T.mrTIMESTAMP, T.mrNextTIMESTAMP, DateDiff("s",T.mrTIMESTAMP, T.mrNextTIMESTAMP) AS STATUSTIME
FROM (
SELECT T1.mrID, T1.mrSEQUENCE, T1.mrUSERID, T1.mrFIELDNAME, T1.mrNEWFIELDVALUE, T1.mrOLDFIELDVALUE, T1.mrTIMESTAMP,
(SELECT MIN(mrTIMESTAMP)
FROM dbo_MASTER3_FIELDHISTORY AS T2
WHERE mrFIELDNAME = "mrSTATUS"
AND T2.mrID = T1.mrID
AND T2.mrTIMESTAMP > T1.mrTIMESTAMP
) As T1.mrNextTIMESTAMP
FROM dbo_MASTER3_FIELDHISTORY AS T1
WHERE mrFIELDNAME = "mrSTATUS"
AND mrTIMESTAMP >= #1/1/2018#
) AS T;
Access замораживаетсякогда я пытаюсь выполнить эти запросы.Я пробовал несколько способов, но не могу заставить его работать