一个累计功能的实现

youyiyang 2012-04-17 11:16:29
大家好!
我在做一个asp的CRM数据库的时候,要用到将每月的订货日累积的功能,代码如下:

dim nianyue, m, k, a(120),y,temp,temp1,dinghuo
k=0
a(0)="2012-4-0"
flag=0

SQLStr="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.movenext
WEND
dinghuo=0
for y=0 to k
temp=split(a(y),"-")
dinghuo=dinghuo+temp(2)
next


a(120)是设了一个120的数组,算它一年12个月,可以显示10年的记录。a(0)是初始值,设为今年的4月份开始,当然也可以设的以前的值,SQL语句也是从四月份开始。
我这样做,基本能够达到效果,但觉得一定还有更好的办法,比如不需要设初始值,变量也不用设的这么多!
请大家看看有没有更好的代码可以实现同样的效果,甚至是只用SQL就可以了~~~
...全文
51 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
youyiyang 2012-04-18
  • 打赏
  • 举报
回复
哈哈,菜鸟,菜鸟
用group by 就可以了。
SELECT count(*), Year(订货日) AS 表达式1, Month(订货日) AS 表达式2
FROM 表1
WHERE 订货日 > #2002-1-1#
GROUP BY Year(订货日), Month(订货日);
wzhiyuan 2012-04-17
  • 打赏
  • 举报
回复
楼主,这不是一个普通的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 ...

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧