Ein Bankkunde kann von bis zu drei versch. Beratern betreut.
Einer für privates, einer für geschäftlich und der dritte für Immobilien.
Somit umfaßt die Datenbank vier Datenfelder:
KD_NR; Beraternr_privat; Beraternr_geschäft; Beraternr_Immobilie
Ich möchte meinen Select so aufbauen, daß ich einen „Oberberater“ definieren kann. Dieser soll in erster Linie der private_Berarter sein, dann kommt der geschäftliche und hat der Kunde nur Immobilien, dann dieser.
Bei zwei Beratern könnte der befehl so aussehen
select datei.kd_nr,
case when datei.berater_privat is not null then datei.berater_privat else datei.berater_geschäft end as oberberater
2.) tabellen ummodellieren, sprich: neue zwischentabelle kunde_berater mit den feldern kd_nr,berater_nr,beratungsart
falls doch in deiner version, dann:
select datei.kd_nr,
case when datei.berater_privat is not null then
datei.berater_privat else datei.berater_geschäft end as
oberberater
from…
unter oracle 2 möglichkeiten:
a)mittels nvl - die einfache variante:
select kd_nr,nvl(berater_privat,nvl(berater_geschaeft,berater_immobilien)) oberberater
from kunde where …
das nvl() kannst natürlich noch weiter verschachteln (je weiter vorne der berater, umso „wichtiger“)
b) mittels decode - die umständlichere variante:
select kd_nr,decode(berater_privat,null,decode(berater_geschaeft,null,beraeter_immobilien,berater_geschaeft),berater_privat) oberberater
wie beim nvl: du kannst verschachteln, was das zeugs hält