vb6+access,不按照自然月统计每个月的记录该怎么写?
按照非自然月统计每月的金额,并显示出月份和金额
例如,有以下记录
jino moneynum jiludate
1 123 2008-12-3
2 234 2008-12-27
3 200 2009-1-1
4 300 2009-1-27
5 400 2009-2-2
每月开始日设置为25日,结束日为24日。
则以上五条记录统计后显示为:
日期 金额
2008-12 123
2009-01 434
2009-02 700
只用sql文,不用查出数据后再用程序分月计算,该怎么写sql文?
多谢!
[解决办法]
用这个进行分组
select iif(日期>24,取左7位(转换成字符(日期+1月)),取左7位(转换成字符(日期))),sum(moneynum) as j from table group by iif(日期>24,取左7位(转换成字符(日期+1月)),取左7位(转换成字符(日期)))
[解决办法]
最好提前定义好财务月份.
运行时检查当前月,如果没有定义,就禁止录入数据.
大部分ERP都这样做的.
[解决办法]
如果你仅仅做一个月的查询,现有的表结构没有什么不便。因为日期型字段实际上是一个 Double 值,整数部分表示的是从 1899 年 12 月起的天数。
"Select jiludate As 日期, moneynum As 金额 From table1 Where jiludate >= #2008-12-25# And jiludate < #2009-1-25#"
但是要做分月汇总,就应该添加一个财务月份字段作为查询辅助。
更新财务月份值
"Update table1 Set AccountMonth = IIf(Day(jiludate) > 25, CDate(Format(DateAdd('m', 1, jiludate), 'yyyy-m')), CDate(Format(jiludate, 'yyyy-m')))"
汇总
"Select Format(AccountMonth, 'yyyy-m') As 日期, Sum(moneynum) As 金额 From table1 Group By AccountMonth"
[解决办法]
在数据库中添加一个“会计期间”表,内容如下
年度 月份 开始日期 结束日期---- ---- ---------- ----------2008 12 2008-11-25 2008-12-242009 01 2008-12-25 2009-01-242009 02 2009-01-25 2009-02-24---- ---- ---------- ----------
[解决办法]
按照你后面几楼的描述,最好是增加几个字段,在数据写入时同步写入或者后期更新
列1:年份
列2:月份(这里根据上月25~本月24日这个规则算好)
列3:周序号
列4:季序号
写入时稍微多花点功夫,出报表时就方便做了。