0

假设我有一些客户 ID 和交易日期。

ID  DATE
1   OCT 1
1   OCT 2
1   OCT 3
1   OCT 31

我想要的是一列显示他们以前的交易日期,另一列显示他们的下一个交易日期(如下所示)。

ID DATE1 DATE2
1  OCT 1  OCT 2
1  OCT2   OCT3
1  OCT 3  OCT 31

这里,ID是一个整数,DATE是一个日期。

我怎样才能做到这一点?

4

2 回答 2

0

Most dialects of SQL support the ANSI standard window functions, including lead():

select t.*
from (select t.*,
             lead(date) over (partition by id order by date) as next_date
      from t
     ) t
where next_date is not null;

For databases that don't support this functionality, you can do something similar with a subquery.

于 2016-11-24T16:51:48.680 回答
0

无论您使用什么数据库,您都可以简单地选择结果两次,两次都使用一个告诉行号的枚举列(例如在 T-SQL 中查看如何使用 ROW_NUMBER()),然后只需加入这两个选择在 a.enumerator = b.enumerator - 1

于 2016-11-24T16:54:22.143 回答