Re: [ora]Внешнее объединение
От: Sinclair Россия https://github.com/evilguest/
Дата: 17.03.20 06:52
Оценка: 4 (1)
Здравствуйте, Funny Rabbit, Вы писали:

FR>В таблице V_PSPAYCARD есть запись


FR>year month rn summ

FR>---------------------------------
FR>2015 10 221599 131,02

FR>В таблице PSPAYCARDRMND есть данные


FR>rn year month summ

FR>-----------------------------

FR>221599 2015 11 131,02

FR>221599 2015 12 131,02
FR>221599 2016 1 131,02
FR>221599 2016 2 1651,02
FR>221599 2016 3 3171,02
FR>221599 2016 4 1829,12
FR>221599 2016 5 776,74
FR>221599 2016 6 1976,74
FR>221599 2016 7 1990,07
FR>221599 2016 8 1737,69
FR>221599 2016 9 2861,17
FR>221599 2016 10 4173,90
FR>221599 2016 11 1821,52
FR>221599 2016 12 2762,47
FR>221599 2017 1 4282,47
FR>221599 2017 2 3002,47
FR>221599 2017 3 2438,03

FR>
FR>select distinct vp.*
FR>  from PSPAYCARDRMND SP1,
FR>       (select distinct mnd.YEAR,
FR>                        mnd.MONTH,
FR>                        mnd.RN as RN,
FR>                        mnd.SUMM as SUMM,
FR>                        mnd.prn 
FR>          from PSPAYCARDRMND mnd
FR>        union all
FR>        select distinct extract(year from v.ddate_from) as year,
FR>                        extract(month from v.ddate_from) as month,
FR>                        v.nrn as RN,
FR>                        v.ndebt_in as SUMM,
FR>                        null
FR>          from V_PSPAYCARD v) vp
FR>        where SP1.PRN(+) = 221599
FR>          and vp.rn = sp1.prn          
FR>          and sp1.year(+) = vp.year
FR>          and sp1.month(+) = vp.month          
FR>order by vp.year, vp.month
FR>


FR>Мне надо чтобы при объединении данные из таблицы V_PSPAYCARD попали в результат выборки. Особенно дата.

Не очень понятно, чего вы хотите. UNION ALL — это склейка из двух таблиц. Считайте, что одну добавили "в хвост" к другой.
Join — это поиск совпадений в двух таблицах. Считайте, что они у вас располагаются рядом друг с другом.
У вас применяется какая-то хитрая комбинация и того и другого. Не очень понятно, зачем вы хотите делать join таблицы с самой собой.
На первый взгляд, вам нужно вот это:
select vp.*
  from (select distinct mnd.YEAR,
                        mnd.MONTH,
                        mnd.RN as RN,
                        mnd.SUMM as SUMM,
                        mnd.prn 
        from PSPAYCARDRMND mnd where mnd.prn = 221599
        union all
        select extract(year from v.ddate_from) as year,
               extract(month from v.ddate_from) as month,
               v.nrn as RN,
               v.ndebt_in as SUMM,
               null as prn
        from V_PSPAYCARD v) vp
order by vp.year, vp.month
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.