日期:2014-05-19  浏览次数:20512 次

关于数据统计问题
现要写一个数据统计的小工具,通过销售数据统计出月均销售情况
源销售表包括:货号,品名,规格,单位,数量,销售总额,客户编号,开单日期
商品目录表:货号,品名,规格,单位
客户表:客户编号,客户名称,别名
库存明细表:货号,数量,供应商,最后进价,

现在我要得到一个如下的表:
货号,品名,规格,单位,库存量,月均销售量,最后供应商,最后进价,持续值

其中:单品月均销售量=单品销售总数量/单品发生销售的总月数
持续值=单品总库存/单品月均销售量

我建了一个存储过程(需要按时间段查询):
pro_statistical   @beginDate   datetime,@endDate   datetime

月均销售量=(case   when   (SELECT   datediff(month,min(开单日期),@endDate)   FROM   tabSell   AS   T1   WHERE   T1.品名=S.品名   AND   T1.规格=S.规格   AND   T1.单位=S.单位)> 0   then   (SELECT   SUM(数量)   FROM   tabSell   AS   T4   WHERE   T4.品名=S.品名   AND   T4.规格=S.规格   AND   T4.单位=S.单位   and   开单日期   between   @beginDate   and   @endDate)/
(SELECT   datediff(month,min(开单日期),@endDate)   FROM   tabSell   AS   T1   WHERE   T1.品名=S.品名   AND   T1.规格=S.规格   AND   T1.单位=S.单位)   else   0   end)

因为涉及到一品多码,所以不可以只按货号来统计
要得到最后的表,我把操作步骤分为了两步:
1,统计出单品月均销售量,总库存,生成临时表“#”
2,通过临时表的月均销售量,得到持续值

持续值=(case   when   月均销售量=0   then   -1   else   (isnull(sum(津村库存),0)+isnull(sum(非津村库存),0))/月均销售量   end),

整个存储过程执行下来花费我30多秒的时间,我不知是哪里设计得不合理,虽然数据是正确的。

另外说明的是,这个销售数据从2006年9月1号开始到现在,总共有23000多条记录。目前每天都有近千条记录添加进来
请问我的这个存储过程该怎么写才合理?谢谢~

------解决方案--------------------
分少题麻烦