列在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中

5 sql asp-classic

显然,当使用GROUP BY子句时,不是聚合函数的列应该是group by子句的一部分.这里的问题是,我不能在GROUP BY子句中包含HTTPADDRESS和DATEENTERED列.另外,我不知道能给我最新条目的功能.

编辑:我使用sql-server.如果我使用访问权限,我会使用LAST功能.

SQL = "SELECT VISITORIP, HTTPADDRESS, DATEENTERED"
SQL = SQL & " FROM STATS"
SQL = SQL & " WHERE DATEENTERED BETWEEN '" & OnlineTime & "' AND '" & NOW() & "'"
SQL = SQL & " GROUP BY VISITORIP"
SQL = SQL & " ORDER BY DATEENTERED DESC"
Set objOnVisitors = objConn.Execute(SQL)    
Run Code Online (Sandbox Code Playgroud)

Cad*_*oux 13

你必须自我加入:

WITH LASTVISIT AS (
    SELECT VISITORIP, MAX(DATEENTERED) AS DATEENTERED
    FROM STATS
    WHERE DATEENTERED BETWEEN @STARTTIME AND @ENDTIME
    GROUP BY VISITORIP
)
SELECT STATS.VISITORIP, STATS.HTTPADDRESS, STATS.DATEENTERED
FROM STATS
INNER JOIN LASTVISIT
    ON LASTVISIT.VISITORIP = STATS.VISITORIP
    AND LASTVISIT.DATEENTERED = STATS.DATEENTERED
ORDER BY STATS.DATEENTERED DESC
Run Code Online (Sandbox Code Playgroud)

注意,这假定给定的VISITORIP在该范围内具有唯一的最大DATEENTERED.