Sql 计算美元到百万返回整数

Sql 计算美元到百万返回整数,sql,db2,Sql,Db2,我试图通过除法将美元金额(以DB为十进制(15,0)非空)计算为百万,但结果我只得到整数金额 预期结果: AMOUNT AMOUNT IN MIL 123000 0.1 1123000 1.123 我有这个,但它只返回0,1 SELECT ... AMOUNT / 1000000 AS "AMOUNT IN MIL" FROM .... 在计算之前,尝试将数据类型更改为6个小数位数: cast(amount as decimal(28,6)) / 1000

我试图通过除法将美元金额(以DB为十进制(15,0)非空)计算为百万,但结果我只得到整数金额

预期结果:

AMOUNT    AMOUNT IN MIL
123000    0.1
1123000   1.123
我有这个,但它只返回0,1

SELECT ... AMOUNT / 1000000 AS "AMOUNT IN MIL" FROM ....

在计算之前,尝试将数据类型更改为6个小数位数:

cast(amount as decimal(28,6)) / 1000000 

你应该熟悉这种算术运算的规则。请参阅本文

简而言之:
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):


在计算前尝试更改数据类型:
cast(金额为十进制(28,6))/1000000
Yes!就这样。请输入答案。非常感谢。
> 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