Case when mit mehrfach verschachtelung

Guten Tag!

Folgende Situation:

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

from…

;

Wer kennt die Lösung?

Gruß

Ingo

hi!

1.) frage: welche db?

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

grüße,
tomh

Hallo Tomh!

Wir arbeiten mit DB2.
Funzt das dann auch?

Vielen Dank für deine Unterstützung!

Ingo

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]