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

发布于 2024-12-08 21:57:50 字数 223 浏览 1 评论 0原文

示例:

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 中发生更改) 是 | 2010-04-01

有没有简单的方法可以做到这一点?

Example:

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

I would like the SELECT to return the following: (a change occurred in FIELD_1)
Y | 2010-04-01

Is there an easy way to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

注定孤独终老 2024-12-15 21:57:50

为 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

Writen for 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

Result:

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

It should also work for sybase if you replace @t with your table and ignore the test data

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文