22,207
社区成员
发帖
与我相关
我的任务
分享
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]
[Quote=引用 23 楼 Limpire 的回复:]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
-->测试数据: 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
select 地区, [期间人数]=sum(case when 注册时间>=@起始日期 then 1 else 0 end),
[总人数]=sum(1) from 表 where 注册时间<=@结束日期 group by 地区
select '期间记录数:'+rtrim(count(*)) from t where 注册时间 between 开始日期 and 结束日期
union
select '总记录数:'+rtrim(count(*)) from t
select sum(case when 注册时间>=@开始时间 then 1 else 0 end),
sum(1) from 表 where 注册时间<=@终止时间