我正在与SSMS 2014合作。
我的示例代码如下:
select name
,family
,group
,mcount
,icount
,(cast(icount as demical(10,2)) / cast(mcount as decimal(10,2))) as per_unit
from ( select distinct
mc.name
,mc.family
,mc.group
,sum(mc.mcount) over (partition by mc.name) as mcount
,sum(ic.icount) over (partition by ic.name) as icount
from mc
join ic
on ic.num1 = mc.num1) as a
order by mcount desc
我的每单位专栏的第一条记录应该除以76 / 50.这应该是1.52,但是,它返回1.5200000000000。第二条记录分为52/28并返回1.8571428571428。
我正在寻找2位小数。我读取为十进制(10,2),但这似乎不起作用。
我做错了什么? 谢谢
答案 0 :(得分:1)
你必须施放分裂的结果。
更改此
(cast(icount as demical(10,2)) / cast(mcount as decimal(10,2))) as per_unit
到这个
cast(icount / mcount as decimal(10,2)) as per_unit
如果icount
& mcount
是int保留现有的强制转换。
答案 1 :(得分:0)
将您的部门更改为:
cast((cast(icount as demical(10,2)) / cast(mcount as decimal(10,2))) as decimal(10,2)) as per_unit
或理想情况下,假设您的icount
和mcount
也是decimal
值:
cast(icount / mcount as decimal(10,2)) as per_unit
答案 2 :(得分:0)
One More演员会给出理想的结果
cast((cast(icount as demical(10,2)) / cast(mcount as decimal(10,2))) as Decimal(10,2)) per_unit