Как сравнить выбранный результат запроса в Oracle? - PullRequest
1 голос
/ 06 января 2020

Мне сложно сравнить 2 таблицы agent_comm_summ_mh_new и agent_comm_summ_mh_old, новая будет обновлять значения.

Это запрос 1:

agent_name | participantid | old_net_payment | new_net_payment | sectionorder
leong      | 10116         | 16729.3         | 17285.96        | 10
pwee       | 10260         | 23128.69        | 23287.48        | 10
select xc.agentname, xc.participantid, bk.value as old_net_payment, xc.value as new_net_payment, xc.sectionorder
from agent_comm_summ_mh_new xc 
inner join agent_comm_summ_mh_old bk on xc.participantid = bk.participantid and xc.buname = bk.buname 
where xc.periodname = 'December 2019' and bk.value<>xc.value and xc.sectionorder=10 and bk.sectionorder=10;

и это запрос 2

agent_name | participantid | pi | subsectionoder
leong      | 10116         | 556.66 | 15
pwee       | 10260         | 158.79 | 15
select t.participantid, t.subsectionorder, t.agentname, t.value 
from agent_comm_summ_mh_new t 
where t.periodname = 'December 2019' and t.subsectionorder=15;

Как записать запрос для обеих таблиц в 1, я хочу получить результат, как показано ниже:

agent_name | participantid | old_net_payment | new_net_payment | sectionorder | pi | subsectionorder
leong      | 10116         | 16729.3         | 17285.96        | 10           | 556.66 | 15
pwee       | 10260         | 23128.69        | 23287.48        | 10           | 158.79 | 15

1 Ответ

1 голос
/ 06 января 2020

Вы можете использовать self join на столе: AGENT_COMM_SUMM_MH_NEW следующим образом:

SELECT
    XC.AGENTNAME,
    XC.PARTICIPANTID,
    BK.VALUE   AS OLD_NET_PAYMENT,
    XC.VALUE   AS NEW_NET_PAYMENT,
    XC.SECTIONORDER,
    T.SUBSECTIONORDER, -- ADDED THIS
    T.VALUE    AS PI -- ADDED THIS
FROM
    AGENT_COMM_SUMM_MH_NEW XC
    INNER JOIN AGENT_COMM_SUMM_MH_OLD BK ON XC.PARTICIPANTID = BK.PARTICIPANTID
                                            AND XC.BUNAME = BK.BUNAME
    -- SELF JOIN
    INNER JOIN AGENT_COMM_SUMM_MH_NEW T ON XC.PARTICIPANTID = T.PARTICIPANTID 
WHERE
    XC.PERIODNAME = 'December 2019'
    AND BK.VALUE <> XC.VALUE
    AND XC.SECTIONORDER = 10
    AND BK.SECTIONORDER = 10
    AND T.PERIODNAME = 'December 2019' -- ADDED THIS
    AND T.SUBSECTIONORDER = 15; -- ADDED THIS;

Cheers !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...