Código SQL

23/08/2004 - 22:24 por Jorge | Informe spam
Buenas tardes a todos,

En un código como este:

SELECT AgentActivityLog.UserId,
AgentActivityLog.StatusGroup, AgentActivityLog.StatusKey,
AgentActivityLog.StateDuration,
AgentActivityLog.StatusDateTime,
AgentActivityLog.EndDateTime
FROM i3_eic.dbo.AgentActivityLog AgentActivityLog
WHERE (AgentActivityLog.StatusDateTime>={ts '2004-08-22
00:00:00'}) AND (AgentActivityLog.EndDateTime<{ts '2004-
08-23 00:00:00'}) AND
(AgentActivityLog.StatusGroup='AVAILABLE') AND
(AgentActivityLog.StatusKey='Available')
ORDER BY AgentActivityLog.UserId,
AgentActivityLog.StatusDateTime

que me arroja todos los usuarios (UserId repetidos o no),
que concidan con las especificaciones que doy, cómo puedo
hacer para que por ejemplo salga un registro de cada
usuario basado en la menor fecha del campo
StatusDateTime, es decir, quiero registros únicos de
UserId que tengan la menor fecha y hora del campo
StatusDateTime.

Muchas gracias por la colaboración.

feliz tarde.
 

Leer las respuestas

#1 ulises
24/08/2004 - 02:49 | Informe spam
Simplificando, para obtener una tabla con la menor fecha
por userid bastaria con :

SELECT AgentActivityLog.UserId,
MIN(AgentActivityLog.StatusDateTime) as DT
FROM i3_eic.dbo.AgentActivityLog AgentActivityLog
GROUP BY AgentActivityLog.UserId

si deseamos obtener la fila completa de los userid que
contengan esa fecha basta con usar lo obtenido
anteriormente como una tabla derivada dentro de un inner
join, algo como :

SELECT *
FROM BY AgentActivityLog.UserId t1 JOIN
( SELECT AgentActivityLog.UserId,
MIN(AgentActivityLog.StatusDateTime) as DT
FROM i3_eic.dbo.AgentActivityLog AgentActivityLog
GROUP BY AgentActivityLog.UserId ) t2
ON t1.UserId = t2.UserId AND t1.StatusDateTime = t2.DT

puedes modificarlo para restringirla por otras condiciones.

Saludos,
Ulises

Buenas tardes a todos,

En un código como este:

SELECT AgentActivityLog.UserId,
AgentActivityLog.StatusGroup, AgentActivityLog.StatusKey,
AgentActivityLog.StateDuration,
AgentActivityLog.StatusDateTime,
AgentActivityLog.EndDateTime
FROM i3_eic.dbo.AgentActivityLog AgentActivityLog
WHERE (AgentActivityLog.StatusDateTime>={ts '2004-08-22
00:00:00'}) AND (AgentActivityLog.EndDateTime<{ts '2004-
08-23 00:00:00'}) AND
(AgentActivityLog.StatusGroup='AVAILABLE') AND
(AgentActivityLog.StatusKey='Available')
ORDER BY AgentActivityLog.UserId,
AgentActivityLog.StatusDateTime

que me arroja todos los usuarios (UserId repetidos o no),
que concidan con las especificaciones que doy, cómo puedo
hacer para que por ejemplo salga un registro de cada
usuario basado en la menor fecha del campo
StatusDateTime, es decir, quiero registros únicos de
UserId que tengan la menor fecha y hora del campo
StatusDateTime.

Muchas gracias por la colaboración.

feliz tarde.
.

Preguntas similares