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-Key: 208382

Url: https://administrator.de/contentid/208382

Printed on: April 24, 2024 at 08:04 o'clock

Member: LianenSchwinger
LianenSchwinger Jun 20, 2013 at 13:35:57 (UTC)
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
Member: teufel112
teufel112 Jun 21, 2013 at 06:57:20 (UTC)
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
Member: LianenSchwinger
LianenSchwinger Jun 21, 2013 updated at 08:17:40 (UTC)
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
Member: teufel112
teufel112 Jun 21, 2013 at 08:05:01 (UTC)
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
Member: LianenSchwinger
LianenSchwinger Jun 21, 2013 updated at 08:17:17 (UTC)
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
Member: teufel112
teufel112 Jun 21, 2013 at 08:19:20 (UTC)
Goto Top
Habs eben getestet, es funktioniert!! Vielen Dank!!