【发布时间】:2014-05-30 15:40:07
【问题描述】:
我正在使用 DB2 获取一个表,将其拆分为多个分区,然后对每个分区中的行进行排序。我的表是这样的:
ID DATE EVENT
-- ---- -----
01 1999-06-01 a
01 1999-06-01 b
01 2006-01-01 a
01 2011-12-31 c
02 1999-01-01 a
02 2003-01-01 a
02 2003-01-01 b
02 2009-11-12 b
我想在哪里订购它以获得以下...
ID DATE EVENT SEQUENCE
-- ---- ----- --------
01 1999-06-01 a 1
01 1999-06-01 b 1
01 2006-01-01 a 2
01 2011-12-31 c 3
02 1999-01-01 a 1
02 2003-01-01 a 2
02 2003-01-01 b 2
02 2009-11-12 b 3
所以我正在尝试:
select a.*, row_number() over(partition by ID,order by DATE) from mytable a
这给了我:
ID DATE EVENT SEQUENCE
-- ---- ----- --------
01 1999-06-01 a 1
01 1999-06-01 b 2
01 2006-01-01 a 3
01 2011-12-31 c 4
02 1999-01-01 a 1
02 2003-01-01 a 2
02 2003-01-01 b 3
02 2009-11-12 b 4
如您所见,即使连续行可能与前一行具有相同的日期,这也会被忽略并迭代 SEQUENCE 列。
我如何确保如果下一行具有相同的日期,则保留序列直到出现具有较晚日期的行?
非常感谢。
【问题讨论】: