Обновление оператора с объединением в Oracle - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть этот запрос, но он не работает.Можете ли вы сказать мне решение?

update temp_msisdn_saldo 
    set saldo=(
        select sum(saldo) from (
            select a.msisdn as mdn, a.saldo from temp_msisdn_saldo a 
            union all
            select b.mdn as mdn, b.saldo from temp_msisdn_saldo_yesterday b 
        ) z
    )
where msisdn=z.mdn

1 Ответ

0 голосов
/ 07 февраля 2019

Вы можете переписать его как:

update temp_msisdn_saldo 
      set saldo = ( select sum(saldo) 
                    from (select a.msisdn as mdn, a.saldo 
                          from temp_msisdn_saldo a 
                          union all
                          select b.mdn as mdn, b.saldo 
                          from temp_msisdn_saldo_yesterday b 
                         ) z
                     where z.mdn = temp_msisdn_saldo.msisdn
                  );

То же самое вы можете использовать CTE:

with cte as (
     <your query here>
)

update temp_msisdn_saldo 
      set saldo = (select sum(c.saldo) from cte c where c.mdn = temp_msisdn_saldo.msisdn);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...