DROP TABLE ݳν PURGE;

CREATE TABLE ݳν
AS
SELECT TO_CHAR(OBJECT_ID) ȣ
     , '200903' Կ
     , round(dbms_random.value(1000, 10000), -2) 
     , round(dbms_random.value(1000, 10000), -2) ڵü
     , round(dbms_random.value(1000, 10000), -2) ſī
     , round(dbms_random.value(1000, 10000), -2) ڵ
     , round(dbms_random.value(1000, 10000), -2) ͳ
FROM   ALL_OBJECTS 
WHERE ROWNUM <= 30000;

DROP TABLE Թ_ PURGE;

CREATE TABLE Թ_ (
  ȣ      NUMBER
, Կ        VARCHAR2(6)
, Թڵ  VARCHAR2(1)
, Աݾ       NUMBER
) ;


set timing on

DECLARE
  CURSOR C(INPUT_MONTH VARCHAR2) IS
    SELECT ȣ, Կ, , ڵü, ſī, ڵ, ͳ
    FROM   ݳν 
    WHERE Կ = INPUT_MONTH;

  REC C%ROWTYPE;
  LTYPE VARCHAR2(1);
BEGIN
  OPEN C('200903');

  LOOP
    FETCH C INTO REC;
    EXIT WHEN C%NOTFOUND;

    IF REC. > 0 THEN
      LTYPE := 'A';
      INSERT INTO Թ_
            (ȣ, Կ, Թڵ, Աݾ) 
      VALUES(REC.ȣ, REC.Կ, LTYPE, REC.);
    END IF;

    IF REC.ڵü > 0 THEN
      LTYPE := 'B';
      INSERT INTO Թ_
            (ȣ, Կ, Թڵ, Աݾ) 
      VALUES(REC.ȣ, REC.Կ, LTYPE, REC.ڵü);
    END IF;

    IF REC.ſī > 0 THEN
      LTYPE := 'C';
      INSERT INTO Թ_
            (ȣ, Կ, Թڵ, Աݾ) 
      VALUES(REC.ȣ, REC.Կ, LTYPE, REC.ſī);
    END IF;

    IF REC.ڵ > 0 THEN
      LTYPE := 'D';
      INSERT INTO Թ_
            (ȣ, Կ, Թڵ, Աݾ) 
      VALUES(REC.ȣ, REC.Կ, LTYPE, REC.ڵ);
    END IF;

    IF REC.ͳ > 0 THEN
      LTYPE := 'E';
      INSERT INTO Թ_
            (ȣ, Կ, Թڵ, Աݾ) 
      VALUES(REC.ȣ, REC.Կ, LTYPE, REC.ͳ);
    END IF;

  END LOOP;

  CLOSE C;

END;




INSERT INTO Թ_(Կ,ȣ,Թڵ,Աݾ)
SELECT x.Կ, x.ȣ
     , CHR(64 + Y.NO) Թڵ
     , DECODE(Y.NO, 1, , 2, ڵü, 3, ſī, 4, ڵ, 5, ͳ)
FROM   ݳν x
     ,(SELECT LEVEL NO FROM DUAL CONNECT BY LEVEL <= 5) y
WHERE x.Կ = '200903'
AND   y.NO IN ( 
        DECODE(, 0, NULL, 1)
      , DECODE(ڵü, 0, NULL, 2)
      , DECODE(ſī, 0, NULL, 3) 
      , DECODE(ڵ, 0, NULL, 4) 
      , DECODE(ͳ, 0, NULL, 5) 
) ;



INSERT INTO Թ_(Կ,ȣ,Թڵ,Աݾ)
SELECT /*+ USE_MERGE(X Y) NO_EXPAND NO_MERGE(X) */ x.Կ, x.ȣ
     , CHR(64 + Y.NO) Թڵ
     , DECODE(Y.NO, 1, , 2, ڵü, 3, ſī, 4, ڵ, 5, ͳ)
FROM  (SELECT 1 DUMMY,Կ,ȣ,,ڵü,ſī,ڵ,ͳ 
       FROM   ݳν
       WHERE  Կ = '200903') x
     ,(SELECT 1 DUMMY, LEVEL NO FROM DUAL CONNECT BY LEVEL <= 5) y
WHERE x.DUMMY = y.DUMMY
AND   y.NO IN ( 
        DECODE(, 0, NULL, 1)
      , DECODE(ڵü, 0, NULL, 2)
      , DECODE(ſī, 0, NULL, 3) 
      , DECODE(ڵ, 0, NULL, 4) 
      , DECODE(ͳ, 0, NULL, 5) 
) ;

