我需要公平地分配一个负责每个记录的人,但规模很大

时间:2017-09-28 20:48:03

标签: plsql oracle11g

我需要公平地分配一个负责每个记录的人,但规模很大(唯一的选择陈述)。

下面我通过注册表呈现它的注册表格,我在其中选择负责人并增加每个记录的分配数量,因此下一个记录将分配具有较少分配的经理。请帮忙。

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;

0 个答案:

没有答案