我被困在这一点上,很难解释写在这里,以及主题标题希望通过数据示例和输出结果下面,足以给你一个想法。
我不知道该用哪条Oracle SQL语句。over(分区)似乎不适用于下面的场景。
screenshoot - before & after
- 数据**
| 客户标识|行标识|日期|类型|
| - ------| - ------| - ------| - ------|
| 兰博01|二十二|2022年3月14日|汽车1|
| 兰博01|二十一|2022年3月11日|汽车1|
| 兰博01|二十个|二零零一年十一月九日|汽车1|
| 兰博01|十九|二零零一年十月十六日|汽车1|
| 兰博01|十八|二○ ○一年八月十日|CAR 2|
| 兰博01|十七|二零零一年五月二十九日|CAR 2|
| 兰博01|十六|二零零一年四月二十四日|CAR 2|
| 兰博01|十五|二零零一年三月十三日|CAR 3|
| 兰博01|十四|二○ ○ ○年十二月二十一日|CAR 3|
| 兰博01|十三|二○ ○ ○年十一月十三日|CAR 3|
| 兰博01|十二|二○ ○ ○年十月二十日|CAR 3|
| 兰博01|十一|二○ ○ ○年三月十四日|汽车1|
| 兰博01|十个|二○ ○ ○年一月十八日|汽车1|
| 兰博01|九|一九九九年十二月二十四日|CAR 2|
| 兰博01|八个|一九九九年九月十四日|CAR 2|
| 兰博01|七|一九九九年三月三十日|CAR 2|
| 兰博01|六个|一九九九年二月二十四日|CAR 2|
| 兰博01|五个|一九九九年二月十九日|CAR 4|
| 兰博01|四个|一九九八年十二月十五日|CAR 4|
| 兰博01|三个|一九九八年十二月十五日|CAR 4|
| 兰博01|第二章|一九九八年九月二十四日|CAR 4|
| 兰博01| 1个|一九九八年八月六日|CAR 4|
我想要的输出结果如下:
| 客户标识|类型|最小日期|最大日期|
| - ------| - ------| - ------| - ------|
| 兰博01|车1|二零零一年十月十六日|二○ ○二年三月十四日|
| 兰博01| 2号车|二零零一年四月二十四日|二○ ○一年八月十日|
| 兰博01|三号车|二○ ○ ○年十月二十日|二零零一年三月十三日|
| 兰博01|车1|二○ ○ ○年一月十八日|二○ ○ ○年三月十四日|
| 兰博01| 2号车|一九九九年二月二十四日|一九九九年十二月二十四日|
| 兰博01| 4号车|一九九八年八月六日|一九九九年二月十九日|
我希望这些对你有意义,希望你能在这方面帮助我。
非常感谢
3条答案
按热度按时间2uluyalo1#
您必须首先应用Tabibitosan算法:
0yg35tkg2#
参考@p3consulting关于Tabibitosan算法的上述帖子
下面是您可以复制并粘贴到Oracle SQL中的脚本
我的问题在这里仍然不工作,我的数据,仍然搜索正确的脚本
尽情享受吧!
jtoj6r0c3#
只需根据现有ROW_ID创建自己的分组计算,并使用MIN_DATE进行排序:
使用示例数据:
结果:
| 客户标识|A_类型|最小日期|最大日期|
| - ------| - ------| - ------| - ------|
| 兰博01|汽车1| 2001年10月16日|二十二年三月十四日|
| 兰博01| CAR 2| 2001年4月24日|2001年8月10日|
| 兰博01| CAR 3| 2000年10月20日|2001年3月13日|
| 兰博01|汽车1| 2000年1月18日|2000年3月14日|
| 兰博01| CAR 2|一九九九年二月二十四日|一九九九年十二月二十四日|
| 兰博01| CAR 4|一九九八年八月六日|一九九九年二月十九日|