我需要公平地分配一个负责每个记录的人,但规模很大(唯一的选择陈述)。
下面我通过注册表呈现它的注册表格,我在其中选择负责人并增加每个记录的分配数量,因此下一个记录将分配具有较少分配的经理。请帮忙。
BEGIN
FOR x in (
SELECT COUNT(*) CANT,REG.CAUSEID,REG.OPTION_ID,REG.DATE
FROM REGISTERS REG
GROUP BY REG.CAUSEID,REG.OPTION_ID,REG.DATE
)
loop
SELECT MANAGER,REGISTERID into V_MANAGERID,V_REGISTERID
FROM(
SELECT MANAGER,
REGISTERID,
ROW_NUMBER() OVER(PARTITION BY MANAGER ORDER BY CANT_REGISTERS ASC NULLS LAST) ORDER
FROM MANAGERS MA
WHERE MA.FECHA = TRUNC(x.DATE)
AND MA.OPTION=x.OPTION_ID
)
WHERE ORDER=1;
UPDATE REGISTERS
SET MANAGERID=V_MANAGERID
WHERE CAUSEID=x.CAUSEID;
UPDATE MANAGERS
SET CANT_REGISTERS = NVL(CANT_REGISTERS,0) + x.CANT
WHERE REGISTERID=V_REGISTERID;
end loop;
END;