;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))