SQL 中嵌套条件的语法错误

Syntax error for nested condtionals in SQL

我是 redshift 的新手,我一直在尝试在此处设置嵌套条件,但出现语法错误

ERROR: syntax error at or near ")"

在SQL这一行中:

ELSE ROUND((last_bid * positions), 2))

我不确定哪里出了问题,因为我熟悉 Python,而且我很确定这就是嵌套条件的工作方式

SELECT 
    *, 
    CASE
       WHEN asset_type = 'EQUITY' 
          THEN (CASE
                   WHEN positions < 0 THEN ROUND((positions * last_ask), 2)
                   ELSE ROUND((last_bid * positions), 2))
          ELSE ROUND((positions * last_ask/100), 2)
    END AS MARKET_VALUE
FROM 
    base_report

你应该像这样结束嵌套的 CASE:

ELSE ROUND((last_bid * positions), 2)
END
)
SELECT *,
        
    CASE
    WHEN asset_type = 'EQUITY' THEN
    (
    CASE
    WHEN positions < 0 THEN
    ROUND((positions * last_ask), 2)
    ELSE ROUND((last_bid * positions), 2)
    END )
    ELSE ROUND((positions * last_ask / 100), 2)
    END AS MARKET_VALUE
FROM base_report

如果可行,请告诉我

请试试这个:

SELECT *

     , CASE
        WHEN asset_type ='EQUITY' THEN 
        (CASE
        WHEN positions < 0 THEN ROUND((positions * last_ask),2)
        ELSE ROUND((last_bid * positions),2) end)
        
        ELSE ROUND((positions * last_ask/100),2)
      END  as MARKET_VALUE

FROM base_report