NetSuite SQL情况时

Ian*_*dan 1 sql netsuite

我试图在NetSuite保存的搜索中编写SQL查询,如果满足某些条件,则返回文本值,如果不满足,则移至下一个CASE WHEN语句。这是我所拥有的:L

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
Run Code Online (Sandbox Code Playgroud)

我不确定是否在错误的位置插入了ENDS,但是我确实早先使用了2个CASE WHEN语句。任何帮助,将不胜感激。

Mik*_*ins 5

when在case语句中可以有多个子句,因此只需要一个case和一个end,就像这样:

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
Run Code Online (Sandbox Code Playgroud)

顺便说一句,您忘记了'您的IN情况之一。