日期:2014-05-17  浏览次数:21082 次

请教个统计的小问题,谢谢各位。
ASP+ACCESS2000
作业表
序号 作业生成时间 生产部门 作业结束时间 完成部门 完成时间
1 2012-09-09 车间1|车间2 2012-10-09 车间1|车间2 2012-10-08
2 2012-09-09 车间2|车间3 2012-10-09 车间2 2012-10-08
3 2012-09-09 车间1 2012-10-09 车间1 2012-10-08
4 2012-09-09 车间2 2012-10-09 车间2 2012-10-08
。。。
要求按完成时间内(如10月)统计各部门完成的工单数量,统计结果如下:
生产部门 作业完成数 作业未完成数量 作业合计
车间1 2 2
车间2 3 3
车间3 1 1
合计 5 1 6

谢谢各位高手。

------解决方案--------------------
#4楼我已经说过了,按照那样设计就方便多了,直接3个sql语句统计,不需要遍历

下面是遍历的
VBScript code
set rs=server.CreateObject("adodb.recordset")
set dit=Server.CreateObject ("Scripting.Dictionary")
rs.Open "select * from [工作表]",conn,1,1

while not rs.EOF
  dept=rs("生产部门")
  arrdept=split(dept,"|")
  fdept="|"&rs("完成部门")&"|"
  for i=0 to ubound(arrdept)
    if isempty(dit(arrdept(i))) then
      arr=array(0,0,0)'键值为数组,第一项完成的,第二项未完成,第三项作业数
    else
      arr=dit(arrdept(i))
    end if
    arr(2)=arr(2)+1'作业数+1
    if instr(fdept,"|"&arrdept(i)&"|")=0 then'未包含在完成部门
      arr(1)=arr(1)+1
    else
      arr(0)=arr(0)+1
    end if
    dit(arrdept(i))=arr
  next
  rs.MoveNext
wend
rs.Close:set rs=nothing:conn.Close:set conn=nothing

keys=dit.Keys
response.Write "<table><tr><td>部门</td><td>作业完成数</td><td>作业未完成数量</td><td>作业合计</td></tr>"
for i=0 to ubound(keys)
arr=dit(keys(i))
response.Write "<tr><td>"&keys(i)&"</td><td>"&arr(0)&"</td><td>"&arr(1)&"</td><td>"&arr(2)&"</td></tr>"
next
response.Write "</table>"