我试图计算美元金额(在分贝十进制(15,0)不为空)除以百万,但结果我只得到整数金额。期望结果:
AMOUNT AMOUNT IN MIL123000 0.11123000 1.123
AMOUNT AMOUNT IN MIL
123000 0.1
1123000 1.123
我有这个,但它只返回0,1。。。
SELECT ... AMOUNT / 1000000 AS "AMOUNT IN MIL" FROM ....
pftdvrlh1#
在计算之前,尝试将数据类型更改为6个小数位数:
cast(amount as decimal(28,6)) / 1000000
a0zr77ik2#
你应该熟悉这种算术运算的规则。请参阅这篇文章。简要地:int/int=intdec(p,s)/dec(p',s')=dec(31,31-p+s-s')所以,如果你想得到int/int上的dec(31,x),你可以显式地将一个分子转换成dec(31-x)。在您的情况下(x=6):
> db2 describe dec(1, 25)/1000000 Column Information Number of columns: 1 SQL type Type length Column name Name length -------------------- ----------- ------------------------------ ----------- 484 DECIMAL 31, 6 1 1
> db2 describe dec(1, 25)/1000000
Column Information
Number of columns: 1
SQL type Type length Column name Name length
-------------------- ----------- ------------------------------ -----------
484 DECIMAL 31, 6 1 1
2条答案
按热度按时间pftdvrlh1#
在计算之前,尝试将数据类型更改为6个小数位数:
a0zr77ik2#
你应该熟悉这种算术运算的规则。请参阅这篇文章。
简要地:
int/int=int
dec(p,s)/dec(p',s')=dec(31,31-p+s-s')
所以,如果你想得到int/int上的dec(31,x),你可以显式地将一个分子转换成dec(31-x)。
在您的情况下(x=6):