PL/SQL迭代中分配序号:按经理分组为下属销售代表编号
解决方案
核心逻辑
你之前的方案没生效,大概率是用了全局计数器,没有按经理维度单独维护计数。正确逻辑是:处理每个经理的数据时,单独初始化一个从1开始的计数器,每处理完该经理下的一名销售代表,计数器自增1,切换到下一位经理时重置计数器即可。
代码示例
场景1:Python处理结构化数据
假设你的原始数据为字典列表格式,处理代码如下:
# 示例原始数据 manager_data = [ {"Manager_id": "Manager_1", "Sales_reps": ["张XX", "李XX"]}, {"Manager_id": "Manager_2", "Sales_reps": ["王XX", "赵XX", "刘XX", "孙XX"]}, {"Manager_id": "Manager_3", "Sales_reps": ["周XX", "吴XX"]} ] # 处理逻辑 for manager in manager_data: print(f"{manager['Manager_id']}:") # enumerate参数start=1直接从1开始计数,无需手动维护计数器变量 for seq, rep in enumerate(manager["Sales_reps"], start=1): print(f"Rep_{seq}") # 不同经理输出结果空行分隔 print()
运行后输出和你要求的格式完全一致。
场景2:SQL直接查询生成编号
如果数据存储在关系型数据库中,直接用窗口函数ROW_NUMBER()按经理分组计数即可:
SELECT Manager_id, -- 按Manager_id分组,组内按销售代表名称排序生成从1开始的序号 CONCAT('Rep_', ROW_NUMBER() OVER(PARTITION BY Manager_id ORDER BY Sales_reps)) AS rep_number FROM 你的业务表名;
内容的提问来源于stack exchange,提问作者JB999
相关产品推荐
相关产品推荐

