我希望根据用户的create_timestamp和last_login日期逐年计算用户数。
USER create_timestamp Last_login
10 2009-06-18 20161029
11 2010-07-01 20110101
12 2011-10-01 20150101
13 2012-12-01 20161101
Year Count
2009 1
2010 2
2011 3
2012 3
2013 3
2014 3
2015 3
2016 2
我是否会考虑使用sum和case语句?
答案 0 :(得分:0)
尝试创建如下所示的外部参照表,将其创建为永久表(我在这里使用临时表),然后像下面一样加入你的表
viewcontroller
答案 1 :(得分:0)
如果你有create_timestamp和Last_login的索引,那么这个查询就可以使用它了。
create table #years(years datetime not null)
insert into #years
values
('2009-01-01'),
('2010-01-01'),
('2011-01-01'),
('2012-01-01'),
('2013-01-01'),
('2014-01-01'),
('2015-01-01'),
('2016-01-01')
create table #data(
userid int,
create_timestamp datetime,
Last_login datetime
)
insert into #data
values
(10,'2009-06-18','20161029'),
(11,'2010-07-01','20110101'),
(12,'2011-10-01','20150101'),
(13,'2012-12-01','20161101'),
select
year(y.years) as [Year],
ca.[Count]
from #years y
outer apply (
select
count(*) as [Count]
from #data d
where y.years between d.create_timestamp and d.Last_login
) ca