我正在尝试使用 PARTITION BY OVER 按某些列“分组”行。我对 PARTITION 的使用有所了解,但是我想按日期“阻止”分区。例如,如果我们有
|col1|col2 |
| A |01/JAN/2012|
| A |01/FEB/2012|
| B |01/MAR/2012|
| B |01/APR/2012|
| A |01/MAY/2012|
我想按 col1 进行分区,但我希望最后一个 A 与前两个“不同”,因为它在日期方面被“B”行分隔。
如果我使用;
SELECT ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY col2) AS RNUM, a.*
FROM table1 a;
它会产生;
|RNUM|col1|col2 |
| 1| A |01/JAN/2012|
| 2| A |01/FEB/2012|
| 3| A |01/MAY/2012|
| 1| B |01/MAR/2012|
| 2| B |01/APR/2012|
但我真正想要的是;
|RNUM|col1|col2 |
| 1| A |01/JAN/2012|
| 2| A |01/FEB/2012|
| 1| B |01/MAR/2012|
| 2| B |01/APR/2012|
| 1| A |01/MAY/2012|
这可以使用 PARTITION BY OVER 吗?目前我已经退回到使用游标来解析数据并分配一个组 id,这样我就可以将两个“A”序列分开,但这很慢。
谢谢,
标记。