如何实现按月份统计数据库信息(50分)

  • 主题发起人 主题发起人 套牢1
  • 开始时间 开始时间

套牢1

Unregistered / Unconfirmed
GUEST, unregistred user!
比如一个工厂,一个月做了很多次生意,数据库里显示的时间是Y-M-D,
如何统计一年中每个月的交易量
最好有简单一点的方法
 
那看你需要多简单了,SQL?
 
就是,如果sql可以简单实现
而不用对每个时间进行什么encode,decode之后,再比较,统计。
简单一点的sql有吗》
 
给你一行sql:
select sum(一次生意的money) from 你的表 group by to_char(thedate,'yy-mm')
 
如果要统计一年的可以加上一句成为比如为2001年
select sum(一次生意的money) from t_x where to_char(thedate,'yyyy')='2001' group by to_char(生意成交的时间e,'yy-mm')
 
用第一个sql的执行结果是得到了所给出的哪个YY-MM的总金额,
如果用户选择是从1-6月的,就要执行六次上述sql吗?
假如执行六次,还必须要把六次的结果放到一个dataset中,这又必须使用临时表吗?
 
to_char 好象sql里不认呀
 
我说是oracle里
不知道你想要什么样的结果呢??
 
看你用的什么数据库了,如果是sql7可以试试下面的语句:
select sum(je) from yourtable group by year(yourdatetime), month(yourdatetime)
也可以在别的数据库中试试。
 
我用的是sqlsever7.0,好象没有这个函数。
我要实现就是
select sum(money) from 表 where 时间>2000.6 and 时间<2001.7 group by 月份
 
....where year(日期)>year(datetimepicker1.date) group by year(日期)
datetimepicker1为一个时间控件;
这句话怎么写呀?
 
不管条件如何变,关键是要用程序方式生成Where...之后的条件语句,
在SQL中可用Year,Month,等函数取得日期的年、月值
比如:要求得1-6月的总金额可用一下条件:
Where Month(theDate)>=1 and Month(theDate)<=6
以此类推,在Delphi用
Format('Where Month(theDate)>%d and Month(theDate)<=%d',起始月,终止月)
再加上年条件即可.
 
text:='select year(日期), sum(金额) from 表
where year(日期)>year('+datetostr(datetimepicker1.date)+') group by year(日期) ';
请问为什么条件限制没什么用,还是可以列出所有年份的数值呢?
 
试试这个:
where year(日期)>year('''+datetostr(datetimepicker1.date)+''') group by year(日期)
或者
where year(日期)>year(Cast('''+datetostr(datetimepicker1.date)+''' as Datetime)) group by year(日期)
 
DecodeDate(vardate,y,m,d);
在每一年中利用SQL月分从1到12来循环即可
 
问题已经解决了,关键是把四位表示的年份取出来,不用year(DateVar),直接用字符串
多谢诸位鼎力帮助。分太少,不好意思拉!
 
后退
顶部