Создать и присоединиться к временным таблицам - PullRequest
0 голосов
/ 10 января 2019

Мне нужна помощь в соединении двух временных таблиц для окончательного вывода.

Мне нужно создать разные таблицы, одну для расчета затраченного времени, а другую для расчета общей суммы

к сожалению, я не смог сделать это в одной таблице, так как было много повторяющихся значений времени, приводящих к неправильным вычислениям.

ниже код:


CREATE TABLE KPI_REPORT (
    USERNAME      CHAR(50),
    HOURS         NUMBER(10),
    MINUTES       NUMBER(10),
    TOTAL_CTN     NUMBER(10),
    AVERAGE_CTN   NUMBER(10)
);

CREATE TABLE TOTAL_TIME (
    USERNAME   CHAR(50),
    HOURS      NUMBER(10),
    MINUTES    NUMBER(10)
);

CREATE TABLE TOTAL_CARTONS (
    USERNAME    CHAR(50),
    TOTAL_CTN   NUMBER(10)
);
    INSERT INTO Total_Time ( Username, Hours, Minutes )
    select 
        ia.username --username
        ,ROUND( SUM( ia.dtime3-ia.dtime1 ) * 24,2 ) --hours
        ,ROUND( SUM( ( ia.dtime3-ia.dtime1 ) * 24 ) * 60,2 ) --minutes
    from 
        actual_db_1 ia
    where 
        to_char( ia.dtime3, 'YYYY-MM-DD' ) between '2019-01-08' and '2019-01-08'
        and ia.site = '7'
        and ia.from_location = 'ORDERPICK'
        and ia.queue like 'LL%'
    group by
        ia.username;

    COMMIT;

    INSERT INTO Total_Cartons ( Username, Total_Ctn )
    select
        ia.USERNAME --username
        ,SUM( pm.qty/pm.packfactor_1 ) --cartons
    from 
        actual_db_1 ia, 
        actual_db_2 pm
    where 
        to_char( ia.dtime3, 'YYYY-MM-DD' ) between '2019-01-08' and '2019-01-08'
        and ia.site = '7'
        and ia.queue like 'LL%'
        and pm.code = product
    group by 
        ia.username;

    COMMIT;

    INSERT INTO KPI_Report ( Username, Hours, Minutes, Total_Ctn, Average_Ctn )

    select
        Total_Time.Username
        ,Total_Time.Hours
        ,Total_Time.Minutes
        ,Total_Cartons.Total_Ctn
        ,ROUND( ( SUM( ia.qty/pm.packfactor_1 ) )  / ( SUM( ia.dtime3-ia.dtime1) * 24 ),2 )
    from 
        Total_Time
        ,Total_Cartons
    where 
        Total_Time.Username = Total_Cartons.Username 
    group by
       Total_Time.Username 
       ,Total_Time.Hours
       ,Total_Time.Minutes
       ,Total_Cartons.Total_Ctn
    order by
        ia.username;

    COMMIT;

Цените любую помощь по этому вопросу, поскольку я застрял.

1 Ответ

0 голосов
/ 10 января 2019

Вы должны добавить таблицы actual_db_1, actual_db_2 к запросу

CREATE TABLE KPI_REPORT (
    USERNAME      CHAR(50),
    HOURS         NUMBER(10),
    MINUTES       NUMBER(10),
    TOTAL_CTN     NUMBER(10),
    AVERAGE_CTN   NUMBER(10)
);

CREATE TABLE TOTAL_TIME (
    USERNAME   CHAR(50),
    HOURS      NUMBER(10),
    MINUTES    NUMBER(10)
);

CREATE TABLE TOTAL_CARTONS (
    USERNAME    CHAR(50),
    TOTAL_CTN   NUMBER(10)
);
    INSERT INTO Total_Time ( Username, Hours, Minutes )
    select 
        ia.username --username
        ,ROUND( SUM(ia.dtime3-ia.dtime1 ) * 24,2 ) --hours
        ,ROUND( SUM( ( ia.dtime3-ia.dtime1 ) * 24 ) * 60,2 ) --minutes
    from 
        actual_db_1 ia
    where 
        to_char( ia.dtime3, 'YYYY-MM-DD' ) between '2019-01-08' and '2019-01-08'
        and ia.site = '7'
        and ia.from_location = 'ORDERPICK'
        and ia.queue like 'LL%'
    group by
        ia.username;

    COMMIT;

    INSERT INTO Total_Cartons ( Username, Total_Ctn )
    select
        ia.USERNAME --username
        ,SUM( pm.qty/pm.packfactor_1 ) --cartons
    from 
        actual_db_1 ia, 
        actual_db_2 pm
    where 
        to_char( ia.dtime3, 'YYYY-MM-DD' ) between '2019-01-08' and '2019-01-08'
        and ia.site = '7'
        and ia.queue like 'LL%'
        and pm.code = product
    group by 
        ia.username;

    COMMIT;

    INSERT INTO KPI_Report ( Username, Hours, Minutes, Total_Ctn, Average_Ctn )

    select
        Total_Time.Username
        ,Total_Time.Hours
        ,Total_Time.Minutes
        ,Total_Cartons.Total_Ctn
        ,ROUND( ( SUM( ia.qty/pm.packfactor_1 ) )  / ( SUM( ia.dtime3-ia.dtime1) * 24 ),2 )
    from 
        Total_Time
        INNER JOIN Total_Cartons ON Total_Time.Username = Total_Cartons.Username
        INNER JOIN actual_db_1 ia ON ia.username = Total_Time.Username
        INNER JOIN actual_db_2 pm ON ia.product = pm.code

    group by
       Total_Time.Username 
       ,Total_Time.Hours
       ,Total_Time.Minutes
       ,Total_Cartons.Total_Ctn
    order by
        ia.username;

    COMMIT;
...