Problema con Group By

15/11/2007 - 13:33 por Cristian Meneses | Informe spam
Buenas a todos
Tengo un problema con un group by dentro de una consulta. La idea es
tener el ultimo acceso de una fecha determinada de todos los usuarios.

SELECT
IDAcceso,
IDUsuario
Nombre,
FechaAcceso,
MAX(HoraAcceso)
FROM Accesos
INNER JOIN Usuarios ON Usuarios.IDUsuario = Accesos.IDUsuario
WHERE FechaAcceso = '01/10/2007'
ORDER BY
Nombre
GROUP BY
IDUsuario

Muchas gracias por su tiempo
Saludos


Cristian Meneses
 

Leer las respuestas

#1 Alejandro Mesa
15/11/2007 - 15:29 | Informe spam
Cristian Meneses,

Trata:

SELECT
u.IDUsuario,
u.Nombre,
a.IDAcceso,
a.FechaAcceso,
a.HoraAcceso
FROM
Usuarios AS u
INNER JOIN
Accesos AS a
ON u.IDUsuario = a.IDUsuario
WHERE
a.FechaAcceso = '20070110'
AND a.HoraAcceso = (
SELECT MAX(b.HoraAcceso)
FROM Accesos AS b
WHERE
b.IDUsuario = u.IDUsuario
AND b.FechaAcceso = '20070110'
)
ORDER BY
u.Nombre
GO

;WITH cte
AS
(
SELECT
u.IDUsuario,
u.Nombre,
a.IDAcceso,
a.FechaAcceso,
a.HoraAcceso,
ROW_NUMBER() OVER(PARTITION BY u.IDUsuario ORDER BY a.HoraAcceso DESC) AS rn
FROM
Usuarios AS u
INNER JOIN
Accesos AS a
ON u.IDUsuario = a.IDUsuario
WHERE
a.FechaAcceso = '20070110'
)
SELECT *
FROM cte
WHERE rn = 1
GO


AMB


"Cristian Meneses" wrote:

Buenas a todos
Tengo un problema con un group by dentro de una consulta. La idea es
tener el ultimo acceso de una fecha determinada de todos los usuarios.

SELECT
IDAcceso,
IDUsuario
Nombre,
FechaAcceso,
MAX(HoraAcceso)
FROM Accesos
INNER JOIN Usuarios ON Usuarios.IDUsuario = Accesos.IDUsuario
WHERE FechaAcceso = '01/10/2007'
ORDER BY
Nombre
GROUP BY
IDUsuario

Muchas gracias por su tiempo
Saludos


Cristian Meneses



Preguntas similares