Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Re: This drives me mad !!!!
Eric Euerlings wrote:
> Hello , > I'v to migrate from SQL Anywhere 5.0 to Oracle 7.3.3.0. Now I've a problem > that drives me mad: > Is this possible to do in way in Oracle:
[snip]
> Any hints. > > Cheers Eric
Eric,
I could be wrong here, but I think you
are having problems with the 7th (wert) and
12th (esk_wert_benutzer) columns. You may also
want to move your selects into in-line
views.
If you are trying to replace "wert" with wert_ben1.esk_wert, and if wert_ben1.esk_wert IS NULL, then wert_ben2.esk_wert, and if wert_ben2.esk_wert IS NULL then....
Column 7, replace:
isnull(wert_ben1, wert_ben2, wert_ben3, wert_abt,
wert_man, wert_def, v_einstellung_man_abt_ben.esg_wert)
With:
NVL(wert_ben1.esk_wert,
NVL(wert_ben2.esk_wert,
NVL(wert_ben3.esk_wert, NVL(wert_abt.esk_wert, NVL(wert_man.esk_wert, NVL(wert_def.esk_wert, NVL(esg_wert, 0)) ) ) ) ) )
Column 12, replace:
isnull(wert_ben1, wert_ben2, wert_ben3)
With:
NVL(wert_ben1.esk_wert,
NVL(wert_ben2.esk_wert,
NVL(wert_ben3.esk_wert, 0)))
...I am assuming that all the "wert" columns are in v_einstellung_man_abt_ben, and I am using 0 for the sake of example.
I haven't tested this, and I made the assumption that ECOopen.v_einstellung_man_abt_ben.einstellungcode is a unique key, but I believe the script would look something like the following. Forgive the length:
Jay!!!
create or replace view
v_einstellung_wert(mandant,
abteilung, benutzer, einstellungcode, esg_bez, est_bez, wert, esg_wert, esk_wert_default, esk_wert_mandant, esk_wert_abteilung, esk_wert_benutzer, esk_wert_benutzer1, esk_wert_benutzer2, esk_wert_benutzer3) as SELECT v_einstellung_man_abt_ben.mandant, v_einstellung_man_abt_ben.abteilung, v_einstellung_man_abt_ben.benutzer, v_einstellung_man_abt_ben.einstellungcode, v_einstellung_man_abt_ben.esg_bez, v_einstellung_man_abt_ben.est_bez, NVL(wert_ben1.esk_wert, NVL(wert_ben2.esk_wert, NVL(wert_ben3.esk_wert, NVL(wert_abt.esk_wert, NVL(wert_man.esk_wert, NVL(wert_def.esk_wert, NVL(v_einstellung_man_abt_ben.esg_wert, 0) )))))), v_einstellung_man_abt_ben.esg_wert, wert_def.esk_wert, wert_man.esk_wert, wert_abt.esk_wert, NVL(wert_ben1.esk_wert, NVL(wert_ben2.esk_wert, NVL(wert_ben3.esk_wert, 0))), wert_ben1.esk_wert, wert_ben2.esk_wert, wert_ben3.esk_wert FROM ECOopen.v_einstellung_man_abt_ben v_einstellung_man_abt_ben, (select einstellungkunde.esk_wert, einstellungkunde.einstellungcode from ECOopen.einstellungkunde where einstellungkunde.esk_mandant is null and einstellungkunde.esk_abteilung is null and einstellungkunde.esk_benutzer is null) wert_def, (select einstellungkunde.esk_wert, einstellungkunde.einstellungcode from ECOopen.einstellungkunde where v_einstellung_man_abt_ben.einstellungcodeReceived on Tue Nov 03 1998 - 12:05:52 CST
= einstellungkunde.einstellungcode
and einstellungkunde.esk_mandant
= v_einstellung_man_abt_ben.mandant
and einstellungkunde.esk_abteilung is null and einstellungkunde.esk_benutzer is null) wert_man, (select einstellungkunde.esk_wert, einstellungkunde.einstellungcode from ECOopen.einstellungkunde, einstellungkunde.einstellungcode where v_einstellung_man_abt_ben.einstellungcode
= einstellungkunde.einstellungcode
and einstellungkunde.esk_mandant
= v_einstellung_man_abt_ben.mandant
and einstellungkunde.esk_abteilung
= v_einstellung_man_abt_ben.abteilung
and einstellungkunde.esk_benutzer is null) wert_abt, (select einstellungkunde.esk_wert einstellungkunde.einstellungcode from ECOopen.einstellungkunde, v_einstellung_man_abt_ben where v_einstellung_man_abt_ben.einstellungcode
= einstellungkunde.einstellungcode
and einstellungkunde.esk_mandant is null and einstellungkunde.esk_abteilung is null and einstellungkunde.esk_benutzer
= v_einstellung_man_abt_ben.benutzer) wert_ben1,
(select einstellungkunde.esk_wert, einstellungkunde.einstellungcode from ECOopen.einstellungkunde, v_einstellung_man_abt_ben where v_einstellung_man_abt_ben.einstellungcode
= einstellungkunde.einstellungcode
and einstellungkunde.esk_mandant
= v_einstellung_man_abt_ben.mandant
and einstellungkunde.esk_abteilung is null and einstellungkunde.esk_benutzer
= v_einstellung_man_abt_ben.benutzer) wert_ben2,
(select einstellungkunde.esk_wert, einstellungkunde.einstellungcode from ECOopen.einstellungkunde v_einstellung_man_abt_ben where v_einstellung_man_abt_ben.einstellungcode
= einstellungkunde.einstellungcode
and einstellungkunde.esk_mandant
= v_einstellung_man_abt_ben.mandant
and einstellungkunde.esk_abteilung
= v_einstellung_man_abt_ben.abteilung
and einstellungkunde.esk_benutzer
= v_einstellung_man_abt_ben.benutzer) wert_ben3
WHERE wert_ben1.einstellungcode = v_einstellung_man_abt_ben.einstellungcode AND wert_ben2.einstellungcode = v_einstellung_man_abt_ben.einstellungcode AND wert_ben3.einstellungcode = v_einstellung_man_abt_ben.einstellungcode AND wert_def.einstellungcode = v_einstellung_man_abt_ben.einstellungcode AND wert_man.einstellungcode = v_einstellung_man_abt_ben.einstellungcode AND wert_abt.einstellungcode = v_einstellung_man_abt_ben.einstellungcode;