用SQL语句!"Select * From [Table] Where [Moth=2 or Moth=3... or Month=5]"
一个简单的例子:(access)SELECT Count(留言本.id) AS id之Count, Str(Year([留言本].[dates]))+"-"+Str(Month([留言本].[dates])) FROM 留言本 GROUP BY Str(Year([留言本].[dates]))+"-"+Str(Month([留言本].[dates]));sqlserver中同理。。
哦,漏了时间限定:一个简单的例子:(access)查询2002-12-20至2003-5-21期间各月的记录总数。。:SELECT Count(留言本.id) AS id之Count, Str(Year([留言本].[dates]))+"-"+Str(Month([留言本].[dates])) AS 表达式1 FROM 留言本 WHERE (((留言本.dates)>#12/20/2002#) AND ((留言本.dates)<#5/21/2003#)) GROUP BY Str(Year([留言本].[dates]))+"-"+Str(Month([留言本].[dates]));sqlserver中同理。。
我用来测试的表叫“留言本”,id、dates是里面的一个字段,id只是用来计数,无关紧要的,你可以选别的字段,而dates就是表里存放日期的字段了,通用点应该是这样:SELECT Count(id) AS 总数, Str(Year([留言本].[dates]))+Str(Month([留言本].[dates])) AS 年、月 FROM yourtable WHERE (((dates)>#12/20/2002#) AND ((dates)<#5/21/2003#)) GROUP BY Str(Year(dates))+Str(Month(dates))where子句不用说了吧,group by子句是先把日期字段做处理,提取其年份和月份合起来然后作为统计的汇总条件把年份也提取出来作为条件,是怕你选的期限跨年度,例如你选的日期是2001-2-3至2005-1-6,如果只对月份汇总,就会把不同年份但同月份的数据都算在一起了(例如2001年6月份、2002年6月份、2003、2004的六月份都通通加在一起了)... 上面我在年月之间加了一个"-"号只是为了好看一点,没有什么实际作用的,删去也行。
SELECT Count(id) AS 总数, Str(Year(dates))+Str(Month(dates)) AS 年、月 FROM yourtable WHERE (((dates)>#12/20/2002#) AND ((dates)<#5/21/2003#)) GROUP BY Str(Year(dates))+Str(Month(dates));
lsftest() 的对以时间为条件 以月分组 求汇总结果
SELECT Count(id) AS 总数, Str(Year(dates))+Str(Month(dates)) AS 年、月 这as年、月是什么意思? 为什么我贴到VB里却说我的"缺少:Case!"
这样写 SELECT Count(id) AS 总数, Str(Year(dates))+Str(Month(dates)) AS 年、月 FROM yourtable WHERE (((dates)>#12/20/2002#) AND ((dates)<#5/21/2003#)) GROUP BY Str(Year(dates))+Str(Month(dates));问题依然没有解决!!!
Dim i As Integer Dim N() As Integer Dim Count As Integer Dim Date1 As Date Dim date2 As Date Date1=Format(DTPicker1.value,"yyyy-mm-dd") Date2=Format(DTPicker2.value,"yyyy-mm-dd") Count=DateDiff("m",Date1,Date2)+1 ReDim N(Count) For i=1 To Count Rs.Open "Select Count(*) As NumberCount From Table_Name Where " & _ "Year(Date_Field)=" & Year(DateAdd("m",i-1,Date1)) & _ " And Month(Date_Field)=" & Month(DateAdd("m",i-1,Date1)),Conn,3,1 If Not Rs.Eof Or Not Rs.Bof Then N(i)=Rs("NumberCount") Else N(i)=0 End If Rs.Close Next
FROM 留言本
GROUP BY Str(Year([留言本].[dates]))+"-"+Str(Month([留言本].[dates]));sqlserver中同理。。
FROM 留言本
WHERE (((留言本.dates)>#12/20/2002#) AND ((留言本.dates)<#5/21/2003#))
GROUP BY Str(Year([留言本].[dates]))+"-"+Str(Month([留言本].[dates]));sqlserver中同理。。
FROM yourtable
WHERE (((dates)>#12/20/2002#) AND ((dates)<#5/21/2003#))
GROUP BY Str(Year(dates))+Str(Month(dates))where子句不用说了吧,group by子句是先把日期字段做处理,提取其年份和月份合起来然后作为统计的汇总条件把年份也提取出来作为条件,是怕你选的期限跨年度,例如你选的日期是2001-2-3至2005-1-6,如果只对月份汇总,就会把不同年份但同月份的数据都算在一起了(例如2001年6月份、2002年6月份、2003、2004的六月份都通通加在一起了)...
上面我在年月之间加了一个"-"号只是为了好看一点,没有什么实际作用的,删去也行。
FROM yourtable
WHERE (((dates)>#12/20/2002#) AND ((dates)<#5/21/2003#))
GROUP BY Str(Year(dates))+Str(Month(dates));
以月分组
求汇总结果
这as年、月是什么意思?
为什么我贴到VB里却说我的"缺少:Case!"
SELECT Count(id) AS 总数, Str(Year(dates))+Str(Month(dates)) AS 年、月
FROM yourtable
WHERE (((dates)>#12/20/2002#) AND ((dates)<#5/21/2003#))
GROUP BY Str(Year(dates))+Str(Month(dates));问题依然没有解决!!!
Dim N() As Integer
Dim Count As Integer
Dim Date1 As Date
Dim date2 As Date
Date1=Format(DTPicker1.value,"yyyy-mm-dd")
Date2=Format(DTPicker2.value,"yyyy-mm-dd")
Count=DateDiff("m",Date1,Date2)+1
ReDim N(Count)
For i=1 To Count
Rs.Open "Select Count(*) As NumberCount From Table_Name Where " & _
"Year(Date_Field)=" & Year(DateAdd("m",i-1,Date1)) & _
" And Month(Date_Field)=" & Month(DateAdd("m",i-1,Date1)),Conn,3,1
If Not Rs.Eof Or Not Rs.Bof Then
N(i)=Rs("NumberCount")
Else
N(i)=0
End If
Rs.Close
Next
我写的是sql查询语句,可以直接在access里运行,但不能在vb里直接用的。