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

求一企业级应用存储过程,超有挑战性,只有三个表,字段极少!在线等
求一存储过程
输入参数:
01.fromDate   char   起始日期,如:2007/02/01
02.toDate   char       终止日期,如:2007/03/01

A表:休日表[只有一个字段]
存储单位所有的休息日
--------------------------
字段:
riqi     Datetime   日期[主键]


B表:销售员表
存储单位所有销售员
--------------------------
字段:
gonghao       char(10)     ID[主键]
name             char(20)     姓名
haspart       bit               是否有职务[1有职务]

C表:销售员访客表
存储销售员访客纪录
一个销售员在一天可以有多条纪录
--------------------------
字段:
visit_num   char(10)   访客ID[主键]
dept             char(10)   销售员部门
visit_date   Datetime   访客日期
gonghao       char(10)   销售员ID

求以下格式报表:
输入参数:
01.fromDate   char   起始日期,如:2007/02/01
02.toDate   char       终止日期,如:2007/03/01

返回:
每个部门的销售员数(过滤有职务的),在该时间段内的
应访客行程数(销售员数*有效天数)、实际访客数

定义:
1.销售员数
(过滤有职务的,即B表中的haspart=0部门销售员)
2.有效天数:
(2007/02/01到2007/03/01)总天数减掉
(2007/02/01到2007/03/01)之间的休日数(A表),
如果   day(toDate)= '20 '   and   day(fromdate)= '21 '  
并且   [month(toDate)-month(fromdate)= '1 '     OR  
          Month(ToDate)   =   "1 "   And   Month(FromDate)   =   "12 "]  
时,还要多减一天

3.应访客行程数   =   销售员数*有效天数
4.实际访客数
该部门每个无职务的销售员实际的行程数的累加和

5.访客率=实际访客数/应访客行程数   *   100%   [保留两位小数]

举例:
A部门有三个业务员,本月有效日为18天,该部门应访客行程数为3*18=54次
其中有一个业务员请2天假,导致C表中无该业务员在该两天的纪录,
则该部门实际访客次数=2*18+1*16=52次

背景:
理论上每个销售员   在每个有效日(fromDate到toDate日期减掉fromDate到toDate休日)
都要至少有一次访客纪录  


//   按部门对C表分组

===========================================================
部门   销售员数     应访客行程数   实际访客数     访客率
-----------------------
    A           3                     36                           30           83.33%
    B           4                     40                           38           95.00%
===========================================================

------解决方案--------------------
不对吧.....你怎么计算销售人员?

销售人员表与部门表没有联系.
B虽然有全体销售人员了.
例如: C里,在3月初某销售人员就请假没访客.一直到3月15号.
你查3-1 到 3-15 时, 某部门总销售人员其实就会比实际的少一人. 怎么办?



------解决方案--------------------
销售员和时间段什么关系??

某个时间段以内,某个销售员没有访客,就认为这个销售员不存在吗??