Desde Excel, duda SQL en MS QUERY

23/08/2004 - 22:28 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 en MS QUERY 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 Valentín Playá Serra
24/08/2004 - 09:41 | Informe spam
Jorge,

hay que usar una función de agrupación, Min en este caso, y Group By. No lo
he probado pero sería algo así:

SELECT AgentActivityLog.UserId,
AgentActivityLog.StatusGroup, AgentActivityLog.StatusKey,
AgentActivityLog.StateDuration,
Min(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
GROUP BY
AgentActivityLog.UserId,
AgentActivityLog.StatusGroup, AgentActivityLog.StatusKey,
AgentActivityLog.StateDuration,
AgentActivityLog.EndDateTime

Saludos,

Valentín Playá Serra
Sonotronic S.A.
****************************************************
"Jorge" escribió en el mensaje
news:b90d01c4894f$c1933bd0$
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 en MS QUERY 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