显然,当使用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.
| 归档时间: |
|
| 查看次数: |
37953 次 |
| 最近记录: |