我是一名新手SQL程序员,但在这里和许多其他SQL论坛上搜索过,并且无法弄清楚为什么我的简单除法脚本仍然忽略小数。我把CAST一切都称为十进制,但仍然没有在输出中得到任何东西。 。
(CAST((ABS(CAST(CAST(SUM(h4qqnb) AS DECIMAL(12,4)) - CAST(SUM(h4hdnb) AS DECIMAL(12,4))AS DECIMAL(12,4)))/CAST(SUM(h4hdnb) AS DECIMAL(12,4))) AS DECIMAL(10,2))*100)||'%' AS Count_Variance_Rate,
我错过了什么?
谢谢!
答案 0 :(得分:0)
这是一个非常丑陋的表达,有太多的CAST,但基本上你正在做的事情(只看最外面的CAST语句)说
CAST(someNumber as DECIMAL(10,2)
它会给你一个带有两位小数精度的数字。然后你将它乘以100,这将给你一个整数。
如果你试图将一个百分比值格式化为两位小数,你可以这样做,假设h4qqnb和h4hdnb是十进制字段开头:
concat(cast(cast(abs(sum(h4qqnb) - sum(h4hdnb)) / sum(h4hdnb) as decimal(10, 4)) * 100 as decimal(10, 2)), '%') as Count_Variance_Rate2
的工作示例