SQL 中嵌套条件的语法错误
Posted
技术标签:
【中文标题】SQL 中嵌套条件的语法错误【英文标题】:Syntax error for nested condtionals in SQL 【发布时间】:2021-02-17 16:42:01 【问题描述】:我对 redshift 还很陌生,我一直在尝试在这里的条件下做一个嵌套案例,但我得到一个语法错误
错误:“)”处或附近的语法错误
在这行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,但只有一个END 如果任何答案都解决了问题,请接受答案。 【参考方案1】:你应该像这样结束嵌套的 CASE:
ELSE ROUND((last_bid * positions), 2)
END
)
【讨论】:
【参考方案2】: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
如果可行,请告诉我
【讨论】:
【参考方案3】:请试试这个:
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
【讨论】:
以上是关于SQL 中嵌套条件的语法错误的主要内容,如果未能解决你的问题,请参考以下文章