2016-05-09 8 views
0

Ich bin mir nicht sicher, wie dies zu codieren ist. Hier sind die Szenarien, die ich in der IF-Anweisung brauche. Sollte dies in zwei verschiedene IF-Statements aufgeteilt werden oder könnte ich möglicherweise CASE verwenden? Ich bin neu im Programmieren, also würde jede Hilfe geschätzt werden.IF/CASE-Anweisung SQL

Scenerios: IF selling_flag = 'N' und calculation_flag = 'Y' DANN return list_price. IF selling_flag = 'Y' und calculation_flag = 'Y' THEN gibt customer_price zurück. IF calculation_flag = 'N' THEN Rückkehr

unit_selling Zur Zeit habe ich:

IF selling_flag = 'N' AND calculation_flag = 'Y' THEN 
    return list_price; 
ELSE 
    return customer_price;  
END IF; 

IF calculation_flag = 'N' THEN 
return selling_price; 
END IF; 
END; 

Danke.

+0

ja, das als Fall Aussage getan werden sollte. Ich bin mit plsql nicht allzu vertraut, aber Sie können nicht wirklich verschiedene Werte innerhalb einer if/else-Anweisung in irgendeiner Art von SQL zurückgeben, sondern es wird verwendet, um zu überprüfen, ob die gesamte Logik zu einer anderen Logik verzweigen sollte. – user2366842

Antwort

1

könnten Sie möglicherweise tun es auf diese Weise Case Statements PLSQL:

CASE 
    WHEN selling_flag = 'N' AND calculation_flag = 'Y' THEN list_price; 
    WHEN selling_flag = 'Y' AND calculation_flag = 'Y' THEN customer_price; 
    ELSE selling_price; 
END CASE; 

Wo Sie Ihre zwei Bedingungen haben, und wenn weder sind sie standardmäßig selling_price erfüllt.

+0

Dies würde den korrekten Wert in den meisten Syntax (mysql, postrgres, teradata, etc.) zurückgeben, aber nicht sicher über PLSQL spezifisch. – Berra2k

+0

Ahh du hast recht. Mir fehlen Semikolons und das Schließen ist falsch. Ich werde es aktualisieren. – Dresden

1

Wenn dies PL/SQL-Code, würden Sie normalerweise elsif verwenden:

IF selling_flag = 'N' AND calculation_flag = 'Y' THEN 
    return list_price; 
ELSIF selling_flag = 'Y' AND calculation_flag = 'Y' 
    return customer_price;  
ELSIF calculation_flag = 'N' THEN 
    return selling_price; 
END IF; 

Dies könnte auch wie folgt geschrieben werden:

IF calculation_flag = 'Y' THEN 
    IF selling_flag = 'N' THEN 
    return list_price; 
    ELSE 
    return customer_price; 
    END IF;  
ELSE 
    return selling_price; 
END IF; 
+0

Vielen Dank! Das funktioniert perfekt. – user2975266