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

一个累计功能的实现解决方案

2012-04-21 
一个累计功能的实现大家好!我在做一个asp的CRM数据库的时候,要用到将每月的订货日累积的功能,代码如下:VBS

一个累计功能的实现
大家好!
我在做一个asp的CRM数据库的时候,要用到将每月的订货日累积的功能,代码如下:

VBScript code
dim nianyue, m, k, a(120),y,temp,temp1,dinghuok=0a(0)="2012-4-0"flag=0SQLStr="SELECT 订货日 FROM 表1 WHERE 订货日 >= #2012-4-1# ORDER BY 订货日 ASC"Set rs3=Server.CreateObject("ADODB.Recordset")Set rs3=conn.execute(SQLStr)'response.Write(rs3(0))While NOT rs3.EOF       IF NOT ISNULL(rs3("订货日")) THEN         nianyue=YEAR(rs3("订货日"))& "-" & MONTH(rs3("订货日"))        'response.write(nianyue) & "<br>"        FOR  m=0 TO k        temp=SPLIT(a(m),"-")        IF temp(0) & "-" & temp(1) = nianyue THEN           temp1=SPLIT(a(m),"-")           a(m)=temp1(2)           a(m)=a(m)+1           a(m)= nianyue & "-" & a(m)           'response.Write(a(m)) & "<br>"           flag = 1 ' 找到了以前数组上有相同的月份           EXIT FOR       end if                                                           NEXT     '这个是新的月份,在以前的数组里没有找到过     if flag <> 1 then        a(k+1)=1        a(k+1)=nianyue & "-" & a(k+1)        'response.write(a(k+1)) & "<br>"        k=k+1        'response.Write("k=" & k) & "<BR>"    end if                                             END IF     flag=0    rs3.movenextWENDdinghuo=0for y=0 to k    temp=split(a(y),"-")    dinghuo=dinghuo+temp(2)next            

a(120)是设了一个120的数组,算它一年12个月,可以显示10年的记录。a(0)是初始值,设为今年的4月份开始,当然也可以设的以前的值,SQL语句也是从四月份开始。
我这样做,基本能够达到效果,但觉得一定还有更好的办法,比如不需要设初始值,变量也不用设的这么多!
请大家看看有没有更好的代码可以实现同样的效果,甚至是只用SQL就可以了~~~

[解决办法]
楼主,这不是一个普通的sql 的group by吗
假设你的极端简化了的订单表是 orders,包含 cnt 数量,和orderdate 日期两个字段,你按月统计,
就是
select sum(cnt),year(orderdate),month(orderdate) from orders
 group by year(orderdae), month(orderdate)
统计的结果就是这样
150 2011 11
160 2011 12
170 2012 1 ......
如果想指定日期就是 ...from orders where orderdate>'2011-4-5' group by ...

热点排行