首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Impala不兼容的返回类型(万一有语句)

Impala不兼容的返回类型(万一有语句)
EN

Stack Overflow用户
提问于 2021-02-15 11:44:08
回答 2查看 2.3K关注 0票数 0

我正在运行Impala查询,并试图在语句中使用case:

代码语言:javascript
运行
复制
SELECT *,
CASE WHEN typ_prtctn  = 2 then  0.5*PRTCTN_ALLCTD_VL  -- life insurance policies pledged
WHEN typ_prtctn  = 18 then  2*PRTCTN_ALLCTD_VL  -- equity and investment funds shares
ELSE PRTCTN_ALLCTD_VL END as PROTECTION_VALUE
FROM database.tablename

它在抱怨

代码语言:javascript
运行
复制
AnalysisException: Incompatible return types 'DECIMAL(38,9)' and 'DECIMAL(38,10)' of exprs '0.5 * PRTCTN_ALLCTD_VL' and 'PRTCTN_ALLCTD_VL'.

不过,这样做很好:

代码语言:javascript
运行
复制
SELECT *,
0.5*PRTCTN_ALLCTD_VL as test  
FROM database.tablename

如错误消息所示,PRTCTN_ALLCTD_VLdecimal(38,10)类型。如有任何建议,请见谅。

EN

Stack Overflow用户

发布于 2021-02-15 11:57:42

尝试将大小写强制转换为十进制。

代码语言:javascript
运行
复制
  SELECT *,
    CAST(CASE WHEN typ_prtctn  = 2 then  0.5*PRTCTN_ALLCTD_VL  -- life insurance policies pledged
            WHEN typ_prtctn  = 18 then  2*PRTCTN_ALLCTD_VL  -- equity and investment funds shares
        ELSE PRTCTN_ALLCTD_VL END as DECIMAL(10,4) ) AS  PROTECTION_VALUE

或者尝试将相同的数据类型应用于强制浮动的所有计算(1.0、2.0而不是2*和相同的值)

代码语言:javascript
运行
复制
CASE WHEN typ_prtctn  = 2 then  0.5*PRTCTN_ALLCTD_VL  -- life insurance policies pledged
WHEN typ_prtctn  = 18 then  2.0*PRTCTN_ALLCTD_VL  -- equity and investment funds shares
ELSE 1.0*PRTCTN_ALLCTD_VL END as PROTECTION_VALUE
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66207425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档