2016-06-20 4 views
-2
SELECT CASE 
     WHEN vGlTransType = 'R' THEN tkt_seq_num 
     WHEN vGlTransType in ('A','E','X') then 
     break 
    END 
+2

Warum willst du brechen? Was soll passieren?! – sagi

+0

Wenn der erste Fall nicht erfüllt ist, will ich keinen Wert, ich möchte nur die Schleife verlassen und gemäß mir standardmäßig nimmt es Null, wenn die erste Bedingung nicht erfüllt ist. –

+0

Warum nicht einfach Filter hinzufügen 'WHERE vGlTransType nicht in ('A', 'E', 'X')'? – sagi

Antwort

0

gibt es keine Schleife in CASE Verwendung

ELSE null

vor END einen Nullwert zurück, wenn andere Bedingungen nicht erfüllt sind

0

wie Alex erwähnt, Sie ELSE wollen:

ELSE NULL ist standardmäßig BTW, das heißt, Sie könnten es einfach überspringen:

SELECT CASE WHEN vGlTransType = 'R' THEN tkt_seq_num 
     END 

Sie haben viele negative Antworten erhalten, weil Sie das falsche Vokabular verwenden. Lassen Sie mich ein article I wrote on CASE zitieren:

SQL ist eine deklarative Sprache: es ist nicht wie die Kontrolle über Programmablauf zieht, wenn tut für zwingend notwendig, Programme. Nichtsdestoweniger hat SQL etwas Ähnliches: der case Ausdruck. Ein Ausdruck - eher als eine Kontrollstruktur - bedeutet, dass Fall das Ergebnis der Formeln (Ausdrücke) basierend auf Bedingungen variiert. Seine Verwendung ähnelt dem ternären Operator : in anderen Programmiersprachen.

Ihre Frage vorschlagen, dass Sie SQL nachdenken CASE zu C ist ähnlich SWITCH (plus CASE). Aber es ist nicht.