开发者

Selecting records from the past three months

开发者 https://www.devze.com 2022-12-19 01:06 出处:网络
I have 2 tables from which i need to run a query to display number of views a user had in the last 3 months from now.

I have 2 tables from which i need to run a query to display number of views a user had in the last 3 months from now.

So far I have come up with: all the field types are correct.

 SELECT dbo_LU_USER.USERNAME
 ,开发者_开发知识库 Count(*) AS No_of_Sessions
 FROM dbo_SDB_SESSION 
   INNER JOIN dbo_LU_USER 
     ON dbo_SDB_SESSION.FK_USERID = dbo_LU_USER.PK_USERID
 WHERE (((DateDiff("m",[dbo_SDB_SESSION].[SESSIONSTART],Now()))=0 
   Or (DateDiff("m",[dbo_SDB_SESSION].[SESSIONSTART],Now()))=1 
   Or (DateDiff("m",[dbo_SDB_SESSION].[SESSIONSTART],Now()))=2))
 GROUP BY dbo_LU_USER.USERNAME;

Basically, the code above display a list of all records within the past 3 months; however, it starts from the 1st day of the month and ends on the current date, but I need it to start 3 months prior to today's date.

Also to let you know this is SQL View in MS Access 2007 code.

Thanks in advance


Depending on how "strictly" you define your 3 months rule, you could make things a lot easier and probably efficient, by trying this:

SELECT dbo_LU_USER.USERNAME, Count(*) AS No_of_Sessions 
FROM dbo_SDB_SESSION 
INNER JOIN dbo_LU_USER 
ON dbo_SDB_SESSION.FK_USERID = dbo_LU_USER.PK_USERID 
WHERE [dbo_SDB_SESSION].[SESSIONSTART] between now() and DateAdd("d",-90,now())
GROUP BY dbo_LU_USER.USERNAME;

(Please understand that my MS SQL is a bit rusty, and can't test this at the moment: the idea is to make the query scan all record whose date is between "TODAY" and "TODAY-90 days").

0

精彩评论

暂无评论...
验证码 换一张
取 消