select 注册时间,count(1)
from t
where 注册时间 btween @s and @e
group by 注册时间

解决方案 »

  1.   

    有一张表,有地区、用户名、注册时间。给定一个起始时间、一个终止时间,求给定起止时间内的期间记录数,以及到终止时间的记录数。用一条sql实现。比如说给定时间2008-1-10和2008-3-9,首个注册用户的注册时间为2007-8-19.既求2008-1-10和2008-3-9间的记录数以及2007-8-19和2008-3-9的记录数。谢谢!---还真没看懂?不如直接求2007-08-19到2008-03-09
      

  2.   

    select count(distinct(用户名)) as '记录数' from tb
    where dt between '开始时间' and '结束时间'
    group by 用户名
      

  3.   

    declare @dt1 as datetime
    declare @dt2 as datetime
    set @dt1 = '2008-1-10'
    set @dt2 = '2008-3-9'declare @first as datetime
    select @first top 1 注册时间 from tb order by 注册时间 select count(*) from tb where 注册时间 between @dt1 and @dt2
    select count(*) from tb where 注册时间 between @first and @dt2
      

  4.   

    select sum(case  when 注册时间>=@开始时间  then 1 else 0 end),
    sum(1) from 表 where 注册时间<=@终止时间
      

  5.   

    MD,MM去约会了,我只好待这里了.
      

  6.   

    select '期间记录数:'+rtrim(count(*)) from t where 注册时间 between  开始日期 and  结束日期
    union
    select '总记录数:'+rtrim(count(*)) from t 
      

  7.   

    表 party用户名    地区   注册时间  
    aa       山东   2007-03-05
    bb       广东   2008-02-11
    cc       山东   2008-03-05用户从界面上选择时间  起始日期  结束日期
    如用户选择 起始日期为2008-01-01 结束日期为2008-03-05
    查询要出的结果:
    地区        期间人数     总人数(注:这个人数是根据结束日期得到)
    山东          1         2
    广东          1           1不知道我说明白了么?各位大侠请赐教,此sql怎么写?
      

  8.   

    select 地区, [期间人数]=sum(case  when 注册时间>=@起始日期  then 1 else 0 end),
    [总人数]=sum(1) from 表 where 注册时间<=@结束日期 group by 地区
      

  9.   

    -->测试数据: party
    create table party (用户名 varchar(2),地区 varchar(4),注册时间 datetime)
    insert into party
    select 'aa','山东','2007-03-05' union all
    select 'bb','广东','2008-02-11' union all
    select 'cc','山东','2008-03-05'/*
    用户从界面上选择时间  起始日期  结束日期
    如用户选择 起始日期为2008-01-01 结束日期为2008-03-05
    查询要出的结果:
    地区        期间人数     总人数(注:这个人数是根据结束日期得到)
    山东          1         2
    广东          1           1
    */declare @Start datetime, @End datetime
    select @Start = '2008-01-01', @End = '2008-03-05'select
    地区,
    期间人数=sum(case when 注册时间>=@Start and 注册时间<=@End then 1 else 0 end),
    总人数=sum(case when 注册时间<=@End then 1 else 0 end)
    from
    party
    group by
    地区/*
    地区   期间人数        总人数         
    ---- ----------- ----------- 
    广东   1           1
    山东   1           2
    */
    -->删除测试
    drop table party
      

  10.   

    select count(distinct(用户名)) as '记录数' from tb
    where dt between '开始时间' and '结束时间'
    group by 用户名
      

  11.   

    declare @dt1 as datetime
    declare @dt2 as datetime
    set @dt1 = '2008-1-10'
    set @dt2 = '2008-3-9'
    select sum(case when 注册时间>=@dt1 then 1 else 0 end) as 期间记录数,
    count(1) as 到终止时间的记录数
    from tb where 注册时间<=@dt2
    ps:不要乱用巨难,这题最难的是理解楼主的表达
      

  12.   

    between 很容易搞定巨难…… - -!!!
      

  13.   

    23楼的写的可以实现了,如果不想分地区的话,直接这样写就可以了.
    DECLARE @Start datetime, @End datetime
    SELECT @Start = '2008-01-01', @End='2008-03-09'SELECT 

    期间人数=sum(case when 注册时间>=@Start and 注册时间<=@End THEN 1 else 0 end),
    总人数=sum(case when 注册时间<=@End then 1 else 0 end)
    from
    [Party]