我有一个查询问题。
这是数据(按时间戳排序):
Data
ID Value Timestamp
1 0 2001-1-1
2 0 2002-1-1
3 1 2003-1-1
4 1 2004-1-1
5 0 2005-1-1
6 2 2006-1-1
7 2 2007-1-1
8 2 2008-1-1
我需要提取不同的值和日期的第一次出现。这里的例外是,只有在该时间范围内没有被新值打断时,我才需要对它们进行分组。所以我需要的数据是:
ID Value Timestamp
1 0 2001-1-1
3 1 2003-1-1
5 0 2005-1-1
6 2 2006-1-1
我已经通过一个复杂的查询完成了这项工作,但我确信有一种更简单的方法可以做到这一点,只是想不出。有人可以帮忙吗?
这就是我开始的 - 可能可以解决这个问题。这是一个应该在值更改时定位的查询。
> SELECT * FROM Data d1 join Data d2 ON d1.Timestamp < d2.Timestamp and
> d1.Value <> d2.Value
它可能可以通过很好地使用 row_number 子句来完成,但无法管理它。