按create_timestamp和上次登录日期计算用户数

时间:2016-11-23 00:31:04

标签: sql-server tsql

我希望根据用户的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语句?

2 个答案:

答案 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