在 Hive 查询语言中将字符串列转换为 3 位数

Casting a String Column to 3 Digit scale in Hive Query Language

我有一个select声明如下

SELECT t5.Name AS ProductName
, CAST (t5.salerevenue AS DECIMAL(20,3)) AS Revenue
, CASE WHEN t5.PreviousRevenue <> 0 THEN CAST(t5.PresentRevenue/t5.PreviousRevenue*100 AS STRING)
       ELSE 'NA' 
       END AS RevenueTrend  

我想将 RevenueTrend 转换为最大 3 点刻度的小数 (20.123) 我必须将它转换为 String 因为不满足 WHEN t5.PreviousRevenue <> 0 我必须将它显示为 'NA'

我试过如下

CASE WHEN t5.PreviousRevenue <> 0 THEN CAST((CAST(t5.PresentRevenue/t5.PreviousRevenue*100) AS DECIMAL(20,3)) AS STRING)
     ELSE 'NA' 
     END AS RevenueTrend    

但是我遇到语法错误。 收入部分预计符合预期。我希望收入趋势部分也像收入一样进行预测。有什么办法可以实现吗?

尝试先转换为小数,然后再转换为字符串:

SELECT . . .
       (CASE WHEN t5.PreviousRevenue <> 0
             THEN CAST(CAST(t5.PresentRevenue/t5.PreviousRevenue*100 AS DECIMAL(20,3)) as string)
              ELSE 'N/A'
        END) AS RevenueTrend