首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

碰到一奇怪事情求解决

2012-08-13 
遇到一奇怪事情求解决with t1 as(select(select cLvName from dbo.tCO_ItemLevel where LEFT(0907,4)c

遇到一奇怪事情求解决
;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)) 

热点排行