У меня есть следующие таблицы:
1) TBL (ID, Data, LastUpdated, DateCreated)
2) TBL_LOG(Log_ID, LogCreateDate, ID, Data, LastUpdated, DateCreated)
TBL
используется для хранения текущих данных и TBL_LOG
используется для хранения всех изменений данных в TBL
(с использованием триггера обновления, удаленная запись изTBL
скопировано в TBL_LOG
).
Теперь мне нужно получить данные по дате актуальности.
Как я могу написать табличную функцию (или другую альтернативу), которая будет возвращать данные в зависимости отRelevanceDate
.
Я понимаю логику, но не могу найти хороший способ написать ее на SQL ...
Логика выглядит так:
@RelevanceDate = '2011-03-01'
IF TBL.LastUpdated <= @RelevanceDate THEN return data from TBL
ELSE IF Exists data in TBL_LOG where TBL_LOG.LastUpdated <= @RelevanceDate
THEN return most resent data from TBL_LOG where TBL_LOG.LastUpdated <= @RelevanceDate
ELSE IF Exists data in TBL_LOG where TBL_LOG.LastUpdated > @RelevanceDate
THEN return the oldest data from TBL_LOG.LastUpdated > @RelevanceDate
ELSE return data from TBL
Этофункция должна возвращать данные, используя приведенную выше логику, для всех записей в TBL
.
Короче говоря, для каждой строки в TBL мне нужны данные, которые были на "RelevanceDate".