Oracle 9.2; Ausgaben spalten mit case when

tplanitz

Erfahrenes Mitglied
Hallo.

eine etwas exotische Anfrage. Angenommen wir haben ein Spalte <Aktion>
Wie würde man eine Ausgabe steuern die z.B. folgendes machen soll: Zeige die Spalte <Aktion> und Ihre inhalte nur wenn die Bedingung WAHR ist.

Bedingung [irgendeine Bedingung z.B i=1 > 2]

If TRUE (dann soll spalte <Aktion> angezeigt werden)
if FALSE (dann soll spalte <Aktion> nicht angezeigt werden)

Im falle von Bedingung = TRUE soll als Ergebnis folgendes dastehen:

Bereich; Aktion
----------------------
7; foo
3; bar

Im falle von Bedingung = FALSE soll als Ergebnis folgendes dastehen:

Bereich
----------------------
7
3

Ist es möglich mit SQL/PLSQL Spalten <auszublenden>, danke für einen Tip und viele Grüße.
Thorsten
 
Mir fallen spontan nur zwei Möglichkeiten ein:
Du schreibst dein Statement zweimal und entscheidest anhand der Bedingung welches Statement du ausführst. Das ist sicherlich das sauberste Vorgehen, wenn auch nicht ganz so komfortabel.
Wenn du deine Ausgabe mit SQL/Plus machst, kannst du mit dem Befehl "COLUMN <name> NOPRINT" bestimmte Spalten einfach nicht anzeigen. D.h. du müsstest je nach Auswertung der Bedingung die Spalte benennen.. Beispiel:

Code:
--- sql*plus script
column hide_me NOPRINT
var i NUMBER
var c REFCURSOR
exec :i := 4

declare
    alias VARCHAR2(30);
begin

    IF :i > 3 THEN
        alias := 'hide_me';
    ELSE
        alias := 'LAST_ANALYZED';
    END IF;

    OPEN :c
    FOR  'SELECT TABLE_NAME, '   ||
         '       LAST_ANALYZED AS ' || alias ||
         ' FROM   USER_TABLES';

end;
/    

print c
 
Hallo,

vielen Dank für Deine Antwort. Die Lösung 1.) ist ziemlich schwer anzuwenden da
ich nicht nur eine Spalte auswerten muß sondern > 20, schade.

Lösung 2 untersuche ich mal.

Tschüß
 
Zurück