Oracle递归选择以查找与客户关联的当前ID



我有一个表,其中包含已在我们的CRM系统中合并的客户ID的历史记录。历史报告Oracle模式中的数据与创建交互记录时的数据一样存在。我需要一种方法来从潜在的旧ID中找到与客户关联的当前ID。为了让这更有趣,我没有为此创建PL/SQL的权限,我只能根据此数据创建Select语句。

客户ID_MERGE_HIST表中的样本数据

| OLD_ID   | NEW_ID   |
+----------+----------+
| 44678368 | 47306920 |
| 47306920 | 48352231 |
| 48352231 | 48780326 |
| 48780326 | 50044190 |

样本交互表

| INTERACTION_ID | CUST_ID  |
+----------------+----------+
| 1              | 44678368 |
| 2              | 48352231 |
| 3              | 80044190 |

我想要一个带有递归子查询的查询,以提供如下结果集:

| INTERACTION_ID | CUST_ID  | CUR_CUST_ID |
+----------------+----------+-------------+
| 1              | 44678368 | 50044190    |
| 2              | 48352231 | 50044190    |
| 3              | 80044190 | 80044190    |

注意:Cust_ID 80044190从未合并过,因此不会出现在ID_MERGE_HIST表中

如有任何帮助,我们将不胜感激。

您可以查看CONNECT BY构造。

此外,您可能想玩递归with(其中一个描述:http://gennick.com/database/understanding-the-with-clause)。CONNECT BY更好,但ORACLE专用。

如果这是一个频繁的请求,您可能需要为所有相关记录存储第一个/最后一个cust_id。

第一个cust_id-将是静态的,但需要两次跳跃才能到达当前的一个

Last cust_id-将立即为您提供结果,但需要对每个新记录的整个树进行更新

相关内容

  • 没有找到相关文章

最新更新