【问题标题】:Syntax error for nested condtionals in SQLSQL 中嵌套条件的语法错误
【发布时间】: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
  • 如果任何答案都解决了问题,请接受答案。

标签: sql case amazon-redshift


【解决方案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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-01
        • 1970-01-01
        • 2013-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多