环境:Oracle数据库,PL/SQL
一、问题描述
1、测试数据:
存在表CJ_T_PHONE,存储一批用户号码;
存在表CJ_T_GROUP,存储一批渠道、渠道管理号码数。
数据如下图:
2、实现需求:
将这批号码分配给这批渠道,每个渠道分配的号码数在渠道表已提供。号码对应哪个渠道,无要求,可随机。
二、解决思路:
- 对PHONE表根据号码排序,排序方式无所谓,主要是为了取号码的序号。这里使用的是ROW_NUMBER() OVER(ORDER BY XX)实现,需确保号码无重复(如果号码有重复,可以使用RANK函数)。
- 对GROUP表的号码数量进行累加求和,获取到渠道-对应号码数的尾部号码序号R_TAIL。这里是使用SUM() OVER(ORDERBYXX)实现。
- 在上一步生成的B表基础上,