Учитывая следующие данные:
CardholderID Source DateTime
-------------- ---------------------------------------- -----------------------
3 2nd_Flr_Ramp_Out_Reader 2010-06-30 13:58:42.410
3 2nd_Flr_Ramp_In_Reader 2010-06-30 13:44:22.417
3 2nd_Flr_Ramp_Out_Reader 2010-06-30 13:41:30.510
3 Lobby_To_Office_Reader 2010-06-30 13:27:51.407
3 2nd_Flr_Ramp_Out_Reader 2010-06-30 13:27:31.313
3 2nd_Flr_Ramp_In_Reader 2010-06-30 13:27:23.203
3 2nd_Flr_Ramp_Out_Reader 2010-06-29 12:03:04.413
3 2nd_Flr_Ramp_In_Reader 2010-06-29 09:18:16.417
3 2nd_Flr_Ramp_Out_Reader 2010-06-28 17:51:08.507
3 2nd_Flr_Ramp_In_Reader 2010-06-28 12:52:28.403
3 2nd_Flr_Ramp_Out_Reader 2010-06-28 12:04:36.407
3 2nd_Flr_Ramp_In_Reader 2010-06-28 09:17:20.407
4 1St_Flr_To_Stairs_Reader 2010-08-02 09:41:14.403
4 1St_Flr_Door_In_Reader 2010-08-02 09:41:12.403
4 1St_Flr_Door_Out_Reader 2010-07-30 18:24:36.400
4 1St_Flr_To_Stairs_Reader 2010-07-30 14:09:54.403
4 1St_Flr_Door_In_Reader 2010-07-30 14:09:48.403
4 1St_Flr_Door_Out_Reader 2010-07-30 13:25:24.407
Как я могу получить минимальное время для источника "In" и максимальное время для источника "Out" для каждого cardholderId по дням.
Первое, что я попробовал, было
select CardHolderId, min(DateTime) as EarliestSwipe, null as LatestSwipe
from EventTable
where source like '%In_Reader%'
group by cardholderid, CardHolderFirstName, CardHolderLastName,dateadd(dd, (datediff(dd, 0, DateTime)),0)
union
select CardHolderId, null as EarliestSwipe, max(DateTime) as LatestSwipe
from EventTable
where source like '%Out_Reader%'
group by cardholderid, CardHolderFirstName, CardHolderLastName, dateadd(dd, (datediff(dd, 0, DateTime)),0)
, но мне нужно объединить результаты двух запросов.Мой вопрос заключается в том, нужно ли мне поворачивать данные, чтобы получить желаемые результаты, или я могу продолжать следовать приведенному мной примеру.Буду очень признателен за любую помощь.