当前位置: 代码迷 >> Sql Server >> 碰到一奇怪事情求解决
  详细解决方案

碰到一奇怪事情求解决

热度:54   发布时间:2016-04-27 11:58:26.0
遇到一奇怪事情求解决
;with t1 as(
select 
  (select cLvName from dbo.tCO_ItemLevel where LEFT('0907',4)=cLvID)中类名,
  COUNT(distinct 商品编码)中类SKU数,
  round(SUM(销售金额),2) 中类销售金额,
  round((sum(销售金额)-sum(销售成本)),2) 中类毛利,
  case SUM(销售金额) when 0 then 0 else round((sum(销售金额)-sum(销售成本))/SUM(销售金额),4) end 中类毛利率 
from dbo.vAC_ItemDay_ZW1 a
where 日期 between '2012-05-21' and '2012-05-21' and 类别码 like '0907'+'%' and 销售金额<>0
), t2 as(
select 
  COUNT(distinct 商品编码)大类SKU数,
  round(SUM(销售金额),2) 大类销售金额,
  round((sum(销售金额)-sum(销售成本)),2) 大类毛利,
  case SUM(销售金额) when 0 then 0 else round((sum(销售金额)-sum(销售成本))/SUM(销售金额),4) end 大类毛利率 
from dbo.vAC_ItemDay_ZW1 a
where 日期 between '2012-05-21' and '2012-05-21' and 类别码 like '09'+'%' and 销售金额<>0
)

select 中类名,
  中类SKU数,
  大类SKU数,
  中类SKU数/大类SKU数 ,
case 大类销售金额 when 0 then 0 else round((中类销售金额/大类销售金额),4) end 中类销售比大类,
case 中类SKU数 when 0 then 0 else round((中类销售金额/中类SKU数),4) end 单品销售郊率,
中类毛利率,
case 大类毛利率 when 0 then 0 else round((中类毛利率/大类毛利率),4) end 中类毛利率比大类,
case 中类SKU数 when 0 then 0 else round((中类毛利/中类SKU数),4) end 单品毛利效率  
from t1 ,t2
这个是我写的代码,不报错,除了 中类SKU数/大类SKU数 这个字段的值是0 但实际上 中类SKU数 = 81 大类SKU数=501 求高人指点
 



------解决方案--------------------
两个都是整数的嘛,cast(中类SKU数 as numeric(8,2))/cast(大类SKU数 as numeric(8,2))即可
------解决方案--------------------
两个都是整数的嘛,cast(中类SKU数 as numeric(8,2))/cast(大类SKU数 as numeric(8,2))即可
------解决方案--------------------
SQL code
中类SKU数/大类SKU数改为1.*中类SKU数/大类SKU数
------解决方案--------------------
SQL code
如果要精确进行舍入则:select cast(1.*中类SKU数/大类SKU数 as DEC(18,2))
  相关解决方案