Выбор записей за последние три месяца - PullRequest
0 голосов
/ 05 февраля 2010

У меня есть 2 таблицы, из которых мне нужно выполнить запрос, чтобы отобразить количество просмотров, которые пользователь имел за последние 3 месяца.

До сих пор я придумал: все типы полей верны.

 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;

В основном, код выше отображает список всех записей за последние 3 месяца; однако он начинается с 1-го числа месяца и заканчивается текущей датой, но мне нужно, чтобы он начался за 3 месяца до сегодняшней даты.

Также, чтобы вы знали, что это SQL View в коде MS Access 2007.

Заранее спасибо

1 Ответ

2 голосов
/ 05 февраля 2010

В зависимости от того, насколько «строго» вы определяете правило 3 месяца, вы можете сделать все намного проще и, вероятно, эффективнее, попробовав это:

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;

(Пожалуйста, поймите, что мой MS SQL немного устарел, и в данный момент не могу проверить это: идея состоит в том, чтобы запрос сканировал все записи, дата которых находится между "СЕГОДНЯ" и "СЕГОДНЯ-90 дней") .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...