Здравствуйте, 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