2013-02-05 89 views
0

我試圖跟蹤用戶登錄應用程序時的用戶數據。我試圖從我的查詢(下面)中拉出的是所有在過去30天或更長時間內未登錄的用戶。但是,它吸引了最近登錄的用戶。幫幫我?所有記錄至少30天的SQL查詢

SELECT UserNM AS [UserID], MAX(EventDT) AS [Last Log-in Date] 
FROM dbo.USREventLog 
WHERE ABS(DATEDIFF([day], EventDT, GETDATE())) > 30 

    AND (UserNM NOT LIKE 'user1') AND (UserNM NOT LIKE 'user2') 
    AND (UserNM NOT LIKE 'user3') AND (UserNM NOT LIKE 'user4') 

GROUP BY UserNM 

順便說一句,我使用他們最近的活動是他們的最後登錄日期的記錄,我有誰絕對不應該被包括在結果一小部分用戶名單。

回答

1

試試這個:

SELECT UserNM AS [UserID], MAX(EventDT) AS [Last Log-in Date] 
FROM dbo.USREventLog 
WHERE EventDT < GETDATE() - 30 

    AND (UserNM NOT LIKE 'user1') AND (UserNM NOT LIKE 'user2') 
    AND (UserNM NOT LIKE 'user3') AND (UserNM NOT LIKE 'user4') 

GROUP BY UserNM, EventDT 
+0

消息147,級別15,狀態1,第3行 聚合不應出現在WHERE子句中,除非它是在含有HAVING子句或選擇列表在子查詢中,並且列被聚合爲外部參考。 –

+0

我已經更新了答案 –

0

我找到了另一種解決辦法在其他地方。查詢被粘貼在下面。

SELECT UserID, [Last Login Date] from (
    SELECT UserNM AS [UserID], MAX(EventDT) AS [Last Login Date] 
    FROM dbo.TSEventLog 
    WHERE (UserNM NOT LIKE 'user 1') AND (UserNM NOT LIKE 'user2') 
    GROUP BY UserNM) x 
WHERE ABS(DATEDIFF(day, [Last Login Date], GETDATE())) > 30 
ORDER BY [UserID] ASC