Я пытаюсь вернуть первую регистрацию для человека на основании минимальной даты регистрации, а затем вернуть полную информацию.Данные выглядят примерно так:
Warehouse_ID SourceID firstName lastName firstProgramSource firstProgramName firstProgramCreatedDate totalPaid totalRegistrations
12345 1 Max Smith League Kid Hockey 2017-06-06 $100 3
12345 6 Max Smith Activity Figure Skating 2018-09-26 $35 1
Конечная цель - вернуть одну строку на человека, которая выглядит следующим образом:
Warehouse_ID SourceID firstName lastName firstProgramSource firstProgramName firstProgramCreatedDate totalPaid totalRegistrations
12345 1 Max Smith League Kid Hockey 2017-06-06 $135 4
Итак, это агрегирует переменные totalPaid и totalRegistrationsоснованный на Warehouse_ID и извлечет остальную информацию на основе min (firstProgramCreatedDate), специфичного для Warehouse_ID.
Это закончится в Таблице, поэтому то, что я недавно попробовал, игнорирует агрегирование totalPaid и totalRegistrations длясейчас (я могу получить это в другом запросе довольно легко).Кажется, что используемый мной запрос работает, но он выполняется вечно;Кажется, что он будет проходить построчно для> 50 000 строк, что занимает вечность.
select M.*
from (
select Warehouse_ID, min(FirstProgramCreatedDate) First
from vw_FirstRegistration
group by Warehouse_ID
) B
left join vw_FirstRegistration M on B.Warehouse_ID = M.Warehouse_ID
where B.First in (M.FirstProgramCreatedDate)
order by B.Warehouse_ID
Любой совет, как мне достичь своей цели без выполнения этого запроса в течение часа плюс?