2016-12-22 8 views
1

Ich versuche, eine SQL-Abfrage in einer NetSuite gespeicherte Suche zu schreiben, die einen Textwert zurückgibt, wenn bestimmte Kriterien erfüllt sind, und wenn sie nicht erfüllt sind, wird es zur nächsten CASE WHEN-Anweisung verschoben. Hier ist, was ich habe: LNetSuite SQL-Fall, wenn

CASE WHEN {shipstate} IN ('AK','ID','MT','OR','WA') THEN 'Northwest' 
ELSE CASE WHEN {shipstate} IN ('CA','HI','NV','AZ') THEN 'West' 
ELSE CASE WHEN {shipstate} IN ('CO','NM','UT','WY') THEN 'Rockies' 
ELSE CASE WHEN {shipstate} IN ('AR','KS,'LA','OK','TX') THEN 'SO Central' 
ELSE CASE WHEN {shipstate} IN ('IN','KY','MI','OH') THEN 'Great Lakes' 
ELSE CASE WHEN {shipstate} IN ('IA','IL','MN','MO','NE','ND','SD','WI') THEN 'Midwest' 
ELSE CASE WHEN {shipstate} IN ('CT','MA','ME','NH','RI','VT') THEN 'Northeast' 
ELSE 'Southeast' 
END END END END END END END 

Ich bin nicht sicher, ob ich die ENDS an der falschen Stelle bin eingeführt wird, aber ich habe es früher die Arbeit mit 2 CASE WHEN Aussagen. Jede Hilfe wäre willkommen.

Antwort

4

Sie können in einem Fall Anweisung mehrere when Klauseln haben, so brauchen Sie nur ein case und ein end, wie folgt aus:

CASE 
    WHEN {shipstate} IN (
     'AK','ID','MT','OR','WA' 
     ) THEN 'Northwest' 
    WHEN {shipstate} IN (
     'CA','HI','NV','AZ' 
     ) THEN 'West' 
    WHEN {shipstate} IN (
     'CO','NM','UT','WY' 
     ) THEN 'Rockies' 
    WHEN {shipstate} IN (
     'AR','KS','LA','OK','TX' 
     ) THEN 'SO Central' 
    WHEN {shipstate} IN (
     'IN','KY','MI','OH' 
     ) THEN 'Great Lakes' 
    WHEN {shipstate} IN (
     'IA','IL','MN','MO','NE','ND','SD','WI' 
     ) THEN 'Midwest' 
    WHEN {shipstate} IN (
     'CT','MA','ME','NH','RI','VT' 
     ) THEN 'Northeast' 
    ELSE 'Southeast' 
END 

BTW, vergessen Sie eine ' in einem Ihrer IN Zustand.