我有一个表如下
| 身份证|键|地址|
| - ------|- ------|- ------|
| 十一|无|纽约|
| 十二|无|华盛顿|
| 十三|1个|华盛顿|
| 十四|1个|纽约|
| 十五|第二章|华盛顿|
| 十六|三个|华盛顿|
| 十七个|三个|华盛顿|
| 十八|四个| lucene 堡|
我希望根据键提取信息,以便每页的最小记录数为3,如果记录3处的键在接下来的几个记录中仍然存在,则需要考虑后续记录,以便结果集看起来像
第一页
| 身份证|键|地址|
| - ------|- ------|- ------|
| 十一|无|纽约|
| 十二|无|华盛顿|
| 十三|1个|华盛顿|
| 十四|1个|纽约|
第二页
| 身份证|键|地址|
| - ------|- ------|- ------|
| 十五|第二章|华盛顿|
| 十六|三个|华盛顿|
| 十七个|三个|华盛顿|
第三页
| 身份证|键|地址|
| - ------|- ------|- ------|
| 十八|四个| lucene 堡|
1条答案
按热度按时间ruyhziif1#
在Oracle 12中,可以使用
MATCH_RECOGNIZE
进行逐行处理:其中,对于示例数据:
输出:
| 识别号|页次|关键词|地址|
| - ------|- ------|- ------|- ------|
| 十一|1个|无|纽约|
| 十二|1个|无|华盛顿|
| 十三|1个|1个|华盛顿|
| 十四|1个|1个|纽约|
| 十五|第二章|第二章|华盛顿|
| 十六|第二章|三个|华盛顿|
| 十七个|第二章|三个|华盛顿|
| 十八|三个|四个| lucene 堡|
如果你只想要某个页面,那么在查询的末尾添加一个
WHERE
过滤器。fiddle