在 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
我有一个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