下面的例子是以2004.07.23为“今天”的,你给出的时间数据中是没有本周的,我在表中加了两行: 7 lxy 2004-07-20 8 lxy 2004-07-18select allrecord,weekrecord from ( select data_input,count(time) allrecord from operation_info group by data_input ) A left join ( select data_input,count(data_input) weekrecord from operation_info where datediff(day,time,getdate())<7 group by data_input ) B on A.data_input=B.data_input运行后的结果是:用户有多少条记录(allrecord) 用户在一周内有多少条记录(weekrecord) 由于你说不要显示用户,所以下面是不显示用户的。allrecord weekrecord 5 2 2 NULL 1 NULL对于其中的NULL,你可以用一个语句查询weekrecord=null的行,然后赋值为0; 也可以在程序读取时作再相关的处理。——lucky 2004.07.23
from operation_info
where time between 一周的开始时间 and 一周的结束时间
group by data_input
2 lxy 2004-04-02
3 lxy2 2004-04-02
4 lxy2 2004-04-02
5 lxy 2004-03-15
6 lxy3 2004-04-02我现在要分类求和.按data_input分类.求出每个用户有多少条记录.然后再求出每个用户在一周内有多少条记录. 结果如下
用户有多少条记录 用户在一周内有多少条记录
"lxy"不要显示,只显示"3" 2
"lxy2"不要显示,只显示"2" 2
"lxy3"不要显示,只显示"1" 0
看到第一行的结果没有.是3和2,因为还有一条是2004-03-02,假如今天是4.7号.也就是一周从1号到7号.所以只有二条
你要的只是本周之内有多少条记录吧?
7 lxy 2004-07-20
8 lxy 2004-07-18select allrecord,weekrecord
from (
select data_input,count(time) allrecord
from operation_info
group by data_input
) A
left join
(
select data_input,count(data_input) weekrecord
from operation_info
where datediff(day,time,getdate())<7
group by data_input
) B
on
A.data_input=B.data_input运行后的结果是:用户有多少条记录(allrecord) 用户在一周内有多少条记录(weekrecord)
由于你说不要显示用户,所以下面是不显示用户的。allrecord weekrecord
5 2
2 NULL
1 NULL对于其中的NULL,你可以用一个语句查询weekrecord=null的行,然后赋值为0;
也可以在程序读取时作再相关的处理。——lucky 2004.07.23