Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Where in merge did not work as expected

Alfred StuppNov 11 2024

Hello,

/* Planzahlen aus Jahr generieren */
define Jahr = 2023;
define Firma = 1;
merge into FIBU_AUSW_PLAN dest
using (select * from KTOSALDO) src
on (src.KTS_NO = dest.PLAN_KONTO )
when matched then update set
dest.PLAN_PERIODE = src.KTS_PER,
dest.plan_saldo = (src.KTS_SOLL - src.KTS_HABEN),
dest.plan_mandant = src.KTS_FIRM
where (src.KTS_PER >= 202301 and src.KTS_PER <= 202312 )
and ( src.KTS_NO > 2000 and src.KTS_NO < 4981) or (src.KTS_NO > 8120 and src.KTS_NO < 8950)
when not matched then
insert (PLAN_KONTO,PLAN_PERIODE,PLAN_MANDANT,PLAN_SALDO)
values (src.KTS_NO, src.KTS_PER, src.KTS_FIRM,(src.KTS_SOLL - src.KTS_HABEN))
where (src.KTS_PER >= 202301 and src.KTS_PER <= 202312)
and ( src.KTS_NO > 2000 and src.KTS_NO < 4981) or (src.KTS_NO > 8120 and src.KTS_NO < 8950) ;

this includes KTS_PER with 202401 and 202399

select * from ktosaldo where KTS_PER >= 202301 and KTS_PER <= 202312
and (( KTS_NO > 2000 and KTS_NO < 4981) or (KTS_NO > 8120 and KTS_NO < 8950));

this works fine.

I did not see the difference.

Thanks for Help. Alfred

Comments
Post Details
Added on Nov 11 2024
2 comments
198 views