求一复杂的sql语句
sql server 2000
表结构 starttime datetime
movie varchar
id int
表中数据举例:
id starttime movie
1 2012-03-22 08:00:00 aa
1 2012-03-22 13:20:00 ab
1 2012-03-23 10:50:00 ac
1 2012-03-23 16:00:00 ad
2 。。。
2 。。。
3 。。。
现在给定个起始时间和结束时间(起始时间和结束时间可以相差一天也可以相差多天),查询在这个时间段中,各个id所产生的数据的条数,关键:每天的13:00到下一天的13:00之间,同一个id无论多少条数据,都算一条。
期望效果:起始时间:2012-03-22 13:00:00 结束时间:2012-03-23 13:00:00
结果为:
id 数量
1 1
2 。。。
------解决方案--------------------
少写了个别名.不好意思.
select id , count(1) cnt from
(
select distinct id , convert(varchar(10),dateadd(hh , -13 , starttime) ,120) starttime from tb where starttime between '2012-03-22 13:00:00' and '2012-03-23 13:00:00'
) t
group by id
--count(1)不是就把数量写死了是1,是在统计每个ID,和count(*)一个意思.