Еще один вопрос новичка здесь,
У меня есть следующий выбор:
SELECT
DATEADD(dd, 0, DATEDIFF(dd, 0, CIC.StatusDateTime)) AS ST_Date,
CIC.UserId,
MIN(CIC.StatusDateTime) as Beginning,
MAX(CIC.EndDateTime) as ending,
DATEPART(hour,MAX(CIC.EndDateTime) - MIN(CIC.StatusDateTime)) * 3600
+ DATEPART(minute, MAX(CIC.EndDateTime) - MIN(CIC.StatusDateTime)) * 60
+ DATEPART(second,MAX(CIC.EndDateTime) - MIN(CIC.StatusDateTime)) AS Login_Time,
SUM(CASE WHEN RS.AGT_STATE_GRP = 5 THEN StateDuration ELSE 0 END) AS Lunch,
SUM(CASE WHEN RS.AGT_STATE_GRP = 3 THEN StateDuration ELSE 0 END) AS Break_,
SUM(CASE WHEN RS.AGT_STATE_GRP = 4 THEN StateDuration ELSE 0 END) AS Coaching,
SUM(CASE WHEN RS.AGT_STATE_GRP = 10 THEN StateDuration ELSE 0 END) AS SYS_Down,
SUM(CASE WHEN RS.AGT_STATE_GRP = 7 THEN StateDuration ELSE 0 END) AS Training,
SUM(CASE WHEN RS.AGT_STATE_GRP = 6 THEN StateDuration ELSE 0 END) AS Meeting,
SUM(CASE WHEN RS.AGT_STATE_GRP = 11 THEN StateDuration ELSE 0 END) AS Default_
FROM dbo.CIC_AgentActivityLog_TMP AS CIC
INNER JOIN dbo.REF_AGT_STATES AS RS
ON CIC.StatusKey = RS.AGT_STATE_DESC
Where CIC.StatusDateTime >='2011-09-01'
GROUP BY CIC.StatusDateTime, CIC.UserId, CIC.EndDateTime
ORDER BY ST_Date,UserID,StatusDateTime;
Используя это, мои результаты, похоже, не группируются вообще. Я пытаюсь получить единственную строку с датой, идентификатором пользователя, firstlogin, lastlogin, totallogintime, а затем набором кодов с их продолжительностью в секундах. У меня есть что-то очень похожее для другого источника данных, который работает нормально.
Я пытался преобразовать и использовать приведение с первым свиданием, думая, что 00:00:00 в конце может быть противоречивым, но безрезультатно. Я не уверен, какая дополнительная информация вам может понадобиться, просто дайте мне знать.
* Edit1 - Мой MIN (CIC.StatusDateTime) как начало, MAX (CIC.EndDateTime) как конец, кажется, не помогает. Для агента у меня есть три строки, которые имеют разное время начала и окончания. Мин и макс не дают мне фактических мин и макс за весь день.
Вот источник данных:
userID StatusDateTime StatusKey EndDateTime StateDuration
bBarsby 9/1/2011 11:36 Out of the office 9/1/2011 11:36 0
bBarsby 9/1/2011 11:36 Out of the office 9/1/2011 11:36 5
bBarsby 9/1/2011 11:36 Available 9/1/2011 14:18 9711
bBarsby 9/1/2011 14:18 Away from desk 9/1/2011 14:39 1261
bBarsby 9/1/2011 14:39 Available 9/1/2011 19:51 18693
bBarsby 9/1/2011 19:51 Out of the office 9/1/2011 19:51 4
bBarsby 9/1/2011 19:51 Out of the office 9/1/2011 19:51 0
Вот результаты
ST_Date UserID Beginning Ending LoginTime Lunch Break Coaching Etc.
9/1/2011 0:00 bBarsby 9/1/2011 11:36 9/1/2011 14:18 9711 0 0 0 0
9/1/2011 0:00 bBarsby 9/1/2011 14:18 9/1/2011 14:39 1261 0 0 0 0
9/1/2011 0:00 bBarsby 9/1/2011 14:39 9/1/2011 19:51 18693 0 0 0 0