分区输出中缺少小数

时间:2013-11-01 16:42:16

标签: sql casting decimal division

我是一名新手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,

我错过了什么?

谢谢!

1 个答案:

答案 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

http://sqlfiddle.com/#!2/279752/5/0

的工作示例