У меня есть таблица, которая возвращает историю значения, а также текущее, каждое с датой.
Самая старая дата - основная запись.Если значение изменяется, создается новая запись со старым значением, а основная запись обновляется новым значением.Если это происходит снова, создается третья запись, которая содержит старое значение.
Так что, если значение начинается с 4, изменяется на 2, а затем снова на 1. Записи будут идти
1
4
2
В настоящее время я создаю внутреннее соединение таблицы с самим собой следующим образом, которая получает максимальную дату из 3 приведенных выше записей, которая будет равна 2. Фактическое значение, которое мне нужно, это 4. Самый простой способсказать, является ли запись исторической, означает, что TriageEndDateTime имеет значение NULL.
INNER JOIN (SELECT EmergencyAttendanceId,MIN(SourceCreateDateTime) as Max_Date
FROM FactEmergencyAttendanceTriageDetail
GROUP BY EmergencyAttendanceId) AS EAiD
ON EAiD.EmergencyAttendanceId = FactEmergencyAttendanceTriageDetail.EmergencyAttendanceId
AND EAiD.Max_Date = FactEmergencyAttendanceTriageDetail.SourceCreateDateTime
Что мне нужно сделать, это выбрать вторую запись, но только если она существует.Так что-то вроде этого.
SELECT EmergencyAttendanceId,MIN(SourceCreateDateTime) as Max_Date
FROM FactEmergencyAttendanceTriageDetail
WHERE IF COUNT(EmergencyAttendanceId) > 1 THEN TriageEndDateTime Is NULL ELSE NOT NULL
GROUP BY EmergencyAttendanceId
inside the INNER JOIN.
Может ли кто-нибудь помочь мне с этим?
Пример данных
В приведенном выше случае запись 2 - это та, которую яЯ после.