Как искать изменения в таблице, которая хранит исторические данные? - PullRequest
1 голос
/ 10 октября 2011

Пример:

FIELD_1 | DATE
X | 2010-01-01
X | 2010-02-01
X | 2010-03-01
Y | 2010-04-01
Y | 2010-05-01
Y | 2010-05-01

Я бы хотел, чтобы SELECT вернул следующее: (изменение произошло в FIELD_1) Y |2010-04-01

Есть ли простой способ сделать это?

1 Ответ

2 голосов
/ 10 октября 2011

Записано для mssql:

declare @t table(field varchar(20), date date)

insert @t values('X', '2010-01-01')
insert @t values('X', '2010-01-02')
insert @t values('X', '2010-01-03')
insert @t values('Y', '2010-01-04')
insert @t values('Y', '2010-01-05')
insert @t values('Y', '2010-01-06')


select b.* from @t a join @t b on dateadd(day, 1, a.date) = b.date
and a.field <> b.field

Результат:

field                date
-------------------- ----------
Y                    2010-01-04

Это также должно работать для sybase, если вы замените @t таблицей и проигнорируете тестовые данные

...