teufel112
Goto Top

Oracle in einer Spalte nur bestimmte Werte ausgeben

Hallo, bitte nicht gleich schimpfen auch wenn ich vielleicht eine dumme Frage stelle.

Ich habe eine Abfrage, die bringt mir aber in einer Spalte Werte, die ich nicht weiterverarbeiten kann, ich brauche aber die restlichen Daten dieser Zeile. Gibt es in Oracle eine Möglichkeit nur bestimmte Werte (z.B. A,B und C aber alles andere nicht) in dieser Spalte auszugeben und alle anderen Werte bei der Ausgabe zu unterdrücken??

Edit:

Ich habe diese Abfrage:

SELECT  DATEN.NR AS NR, 
DATEN.ART AS ART, 
DATEN.ID AS ID 
FROM  AUFTRAEGE, DATEN
WHERE   DATEN.ID = AUFTRAEGE.ID  

und bekomme diese Ausgabe:

NRARTID
47931-776953
70912E776954
30808H776955
47927N776956
76585Z776957

ich möchte aber diese Ausgabe:

NRARTID
47931776953
70912776954
30808H776955
47927N776956
76585776957

gibt es da eine Möglichkeit??

MfG teufel112

Content-ID: 208382

Url: https://administrator.de/forum/oracle-in-einer-spalte-nur-bestimmte-werte-ausgeben-208382.html

Ausgedruckt am: 10.04.2025 um 04:04 Uhr

LianenSchwinger
LianenSchwinger 20.06.2013 um 15:35:57 Uhr
Goto Top
Hallo teufel112,

meinst Du sowas?

SELECT a.*
FROM tabelle AS a
WHERE a.suchspalte in ('A', 'B', 'C')  

Dann werden alle Zeilen ausgegeben, in der in der Spalte "suchspalte" einer der Werte A, B oder C steht.

Gruß Jörg
teufel112
teufel112 21.06.2013 um 08:57:20 Uhr
Goto Top
Hallo LianenSchwinger, ich glaube nicht. Ich mein Porblem nicht besonders gut beschrieben, ich habe diese Abfrage:

SELECT  DATEN.NR AS NR, 
DATEN.ART AS ART, 
DATEN.ID AS ID 
FROM  AUFTRAEGE, DATEN
WHERE   DATEN.ID = AUFTRAEGE.ID  

und bekomme diese Ausgabe:

NRARTID
47931-776953
70912E776954
30808H776955
47927N776956
76585Z776957

ich möchte aber diese Ausgabe:

NRARTID
47931776953
70912776954
30808H776955
47927N776956
76585776957

gibt es da eine Möglichkeit??

MfG teufel112
LianenSchwinger
LianenSchwinger 21.06.2013 aktualisiert um 10:17:40 Uhr
Goto Top
Hallo teufel112,

ja, da gibt es eine Möglichkeit face-smile

SELECT DATEN.NR AS NR,
       CASE WHEN DATEN.ART IN ('-', 'E', 'Z')   
            THEN NULL 
            ELSE DATEN.ART 
       END ART,
       DATEN.ID AS ID
FROM AUFTRAEGE
INNER JOIN DATEN ON DATEN.ID = AUFTRAEGE.ID

Wenn einzelne Werte der Spalte Art ausgetauscht werden sollen dann geht das auch.

SELECT DATEN.NR AS NR,
       CASE DATEN.ART WHEN 'A' THEN '1'   
                      WHEN 'B' THEN '2'  
                      WHEN 'C' THEN '3'   
            ELSE DATEN.ART 
       END ART,
       DATEN.ID AS ID
FROM AUFTRAEGE
INNER JOIN DATEN ON DATEN.ID = AUFTRAEGE.ID

Gruß Jörg
teufel112
teufel112 21.06.2013 um 10:05:01 Uhr
Goto Top
Vielen Dank für die Antwort, werde ich testen es sollte sicher auch so funktionieren:

CASE WHEN DATEN.ART NOT IN ('H', 'N')  
THEN NULL  
ELSE DATEN.ART

da ich nur die H und N brauche???

MfG teufel112
LianenSchwinger
LianenSchwinger 21.06.2013 aktualisiert um 10:17:17 Uhr
Goto Top
... ja geht natürlich auch, oder ohne die Negierung:

CASE WHEN DATEN.ART IN ('H', 'N')  
     THEN DATEN.ART
     ELSE NULL
END ART

G Jörg
teufel112
teufel112 21.06.2013 um 10:19:20 Uhr
Goto Top
Habs eben getestet, es funktioniert!! Vielen Dank!!