0

我有一个表格,我必须在其中更新该特定日期的用户数量以及从给定日期起过去 7 天内的用户数量。样本数据看起来像

Date    UserCountToday  UserCount7days
20120911    907575  
20120910    953629  
20120909    1366180 
20120908    1388916 
20120907    1009425 
20120906    918638  
20120905    956770  
20120904    1018152 
20120903    1306341 
4

2 回答 2

0

尝试这个:

 with cte as 
        (select *,ROW_NUMBER() over(order by [Date]) as row_num
        from t_users)
 select [Date],UserCountToday, (select SUM(UserCountToday) 
 from   cte c1 where c.row_num>=c1.row_num 
 and    abs(c.row_num-c1.row_num)<7)  as UserCount7days 
 from   cte c

结果

Date    UserCountToday  UserCount7days
20120903    1306341 1306341
20120904    1018152 2324493
20120905    956770  3281263
20120906    918638  4199901
20120907    1009425 5209326
20120908    1388916 6598242
20120909    1366180 7964422
20120910    953629  7611710
20120911    907575  7501133
于 2012-09-13T08:52:42.110 回答
0
;WITH CTE as (select row_number() over (order by date) as rn,Date,UserCountToday,UserCount7days from tbl5)

,CTERec as (
select rn,Date,UserCountToday ,UserCountToday  as UserCount7days from CTE where rn=1
union all
select c.rn,c.Date,c.UserCountToday ,c.UserCountToday+c1.UserCount7days  as UserCount7days from CTERec c1 inner join CTE c
on c.rn=c1.rn+1 
)

select Date,UserCountToday,CASE WHEN rn<=7 then UserCount7days else (UserCount7days-(select UserCount7days from CTERec where rn=c.rn-7)) end asUserCount7days  from CTERec c
于 2012-09-13T08:34:01.610 回答