如何使CAST正常工作与分裂

时间:2017-05-25 14:41:01

标签: sql tsql ssms window-functions

我正在与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),但这似乎不起作用。

我做错了什么? 谢谢

3 个答案:

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

或理想情况下,假设您的icountmcount也是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