查询

时间:2016-05-10 10:03:24

标签: sql sql-server

我希望每个用户在过去30天内登录,并检查他们前7天的活动。 Date一旦他们登录就会映射他们的活动。 Day是用户登录后经过的天数。

我想要这样的东西。

SELECT UserID, Date
FROM Web
WHERE (Day < = 30) and ( CONVERT(date, Date) - CONVERT(date,CURDATE()) - Day) <= 7 )
ORDER BY UserID asc, Date desc;

我的SQL技能非常基础,所以我需要它尽可能简单。

编辑:

我想也许是这样的:

SELECT UserID, DT 
FROM test
WHERE (Day < = 30) and DATEDIFF(DAY, DATEADD( DAY, -Day, GETDATE() ), Date) <= 7  
ORDER BY UserID asc, DT desc;

1 个答案:

答案 0 :(得分:1)

这应该可以解决问题:

SELECT UserID, Date
FROM Web
WHERE (Day < = 30) and DATEDIFF(DAY, DATEADD(DAY, -[Day], GETDATE()), [Date]) <= 7
ORDER BY UserID asc, Date desc;