Не могли бы вы помочь мне со следующим запросом?SQL Server 2008: DateDiff() из Min()/Max() не работает
Моя цель:
В течение каждого дня и для каждого сотрудника выбрать минимальную DateTime и максимальную DateTime и получить разницу во времени в минутах
Мой запрос:
SELECT
PersonalId, Name, LastName,
Min(TmsPrick) as MinDatetime,
Max(TmsPrick) as MaxDatetime,
DATEDIFF(mi, MIN(TmsPrick), MAX(TmsPrick)) AS Expr1
FROM
prickTable
GROUP BY
DATEPART(dy, TmsPrick), PersonalId, name, lastname, TmsPrick
ORDER BY
PersonalId, TmsPrick
Примечание: DATEPART (dy, TmsPrick) = День года
Мой ожидаемый выход
PersonalId | Name | LastName | MinDatetime | MaxDatetime | Expr1
------------------------------------------------------------------------------------
000001 | A | AC |2014-01-05 07:12:00|2014-01-05 16:00:00 | 528
000001 | A | AC |2014-01-06 07:08:00|2014-01-05 16:00:00 | 532
000001 | A | AC |2014-01-07 07:11:00|2014-01-07 16:00:00 | 529
000002 | B | BD |2014-01-05 07:11:00|2014-01-05 16:00:00 | 529
Выход я получаю:
PersonalId | Name | LastName | MinDatetime | MaxDatetime | Expr1
------------------------------------------------------------------------------------
000001 | A | AC |2014-01-05 07:12:00|2014-01-05 16:00:00 | 1053168
000001 | A | AC |2014-01-06 07:08:00|2014-01-05 16:00:00 | 532
000001 | A | AC |2014-01-07 07:11:00|2014-01-07 16:00:00 | 529
000002 | B | BD |2014-01-05 07:11:00|2014-01-05 16:00:00 | 1053169
Любая идея, почему мой вывод показывает такие различия?
Благодаря
Примечание: Значения в Tmsprick могут варьироваться от нескольких в день до 2 в неделю. Таблица содержит значения от более 3 лет.
ГРУППА ПО DATEPART (dy, TmsPrick) ?? – Miller
Ну, для начала, почему вы не используете те же столбцы, на которых вы рассчитали дату «MAX» и «MIN» ?. Для тех, кого вы используете 'TmsPrick', и для разницы в минутах вы используете' tijdstip' – Lamak
@Lamak. Хорошая точка зрения. Я изменил названия колонок с голландского несколько более английского. Но я, кажется, забыл некоторые имена. Изменится em напрямую – User999999