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
我是 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