如何在保存历史数据的表中查找更改?

时间:2011-10-10 11:48:33

标签: sql sybase

示例:

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 个答案:

答案 0 :(得分:2)

为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

如果将@t替换为表并忽略测试数据

,它也适用于sybase