2016-03-31 17 views
0

Ich möchte die folgende case-Anweisung mit dem Feld TERM_2 schreiben (hat zwei Untergruppen: LT und ST).Unterabfrage mit case-Anweisung

CASE WHEN TERM_2 = LT und TIER = 5 THEN 5,49 ELSE 'NULL' END AS BU

Ich kann den obigen Fall Anweisung als TERM_2 gerade erstellt wird. Ich denke, ich brauche eine Unterabfrage und ich habe viele Möglichkeiten ausprobiert, aber es funktioniert nicht. Bitte schauen Sie sich meinen Code an und helfen Sie mir, das Problem zu lösen. Vielen Dank im Voraus.

Antwort

0

Da a.bu auf den Wert a.term_2 und a.tier angewiesen ist, hängt es indirekt von a.term Feld ab. Sie müssen also einfach prüfen, ob a.term größer als 60 ist (a.term_2 entspricht LT, wenn a.term größer als 60 ist).

SELECT 
    a.marketing_plan, 
    a.term, 
    a.tier, 
    CASE WHEN a.term<=60 THEN 'ST' ELSE 'LT' END AS term_2, 
    CASE WHEN a.term>60 AND a.tier=5 THEN 5.49 ELSE NULL END AS bu 
FROM ABC a; 
+0

Während dieser Code die Frage beantworten kann, zusätzlichen Kontext in Bezug auf _why_ und/oder _how_ es beantwortet die Frage würde seine langfristige Wert deutlich verbessern. Bitte [bearbeiten] Sie Ihre Antwort, um eine Erklärung hinzuzufügen. –