2016-11-23 16 views
0

ich eine deutliche Spalte aus einer Oracle-Datenbank auszuwählen versuche, mein Code:Oracle SQL-Fehler: verschiedene Fall

select ID,distinct case when DM='ST1B' then MC else DM end from D_DZDY 

aber, es nicht work.If i ‚eindeutige‘ entfernen, funktioniert es:

Jeder kann mir bei diesem Problem helfen, vielen Dank! : D

+1

Sie verwenden 'DISTINCT' mit falschen Syntax. Bitte geben Sie einige Dummy-Daten und was sind Ihre erwarteten Ergebnisse. –

+0

Suchst du nach 'select distinct ID, fall wenn DM = 'ST1B' dann MC else DM endet von D_DZDY;'? – JSapkota

+0

Welche ID würden Sie erwarten, wenn Sie 10 Zeilen mit demselben CASE-Wert haben? –

Antwort

0

Die Syntax lautet select distinct. Es gibt keine distinct Funktion oder Operator in einer einzelnen Spalte.

Vielleicht beabsichtigen Sie:

select distinct ID, (case when DM = 'ST1B' then MC else DM end) 
from D_DZDY; 

Diese verschiedene Paare von id und die case Ausdruck zurück.

+0

Keine Klammern für CASE –

+0

@DuduMarkovitz. . . Ich lege immer "Case" in Klammern. Ich finde es viel einfacher zu sehen, wo der 'Fall' endet, besonders wenn sie verschachtelt sind –

+0

Der Kommentar ist für die OP/Leser. Da dies eine weitere Änderung gegenüber dem OP-Code ist, war es wichtig zu verdeutlichen, dass dies nur eine kosmetische Veränderung ist. –

0

DISTINCT ON ROW FUNKTIONIERT, sollten Sie diese Syntax:

select distinct ID,(case when DM='ST1B' then MC else DM end) from D_DZDY 

WENN SIE GERADE Aufschiebung Werte der CASE-Anweisung wünschen könnte Sie verwenden diese

select distinct (case when DM='ST1B' then MC else DM end) from D_DZDY 
+0

Keine Notwendigkeit für Klammern um CASE –

+0

Keine Notwendigkeit, SCREAM AT US. Bitte repariere deinen Caps-Lock-Schlüssel, es ist kaputt –