У меня есть набор данных, где я пытаюсь найти следующее:
Если statusid = 113917, то я хочу найти максимальную дату и назвать ее «starttatusdate». Если statusid = 49938, тогда я найду максимальную дату и назову ее «endstatusdate».
declare @t table(practid int, statusid int, statusdate date)
insert into @t values (1, 113917, '2018-03-01'),
(1, 113917, '2018-04-01'),
(1, 113917, '2018-05-01'),
(1, 49938, '2018-06-01'),
(2, 113917, '2018-03-15'),
(2, 113917, '2018-03-18'),
(2, 49938, '2018-04-22')
Я хочу такой результат:
practid startstatusdate endstatusdate
1 2018-03-01 2018-06-01
2 2018-03-15 2018-04-22
Я могу создать это с помощью двух временных таблиц: одна получает максимальное значение starttatusdate, а другая - максимальное значение endstatusdate, а затем присоединяется к этим таблицам. Но я бы хотел сделать это одним запросом.
Я пытался что-то вроде этого:
Select practid,
(select max(statusdate)
from Table A
where statusid = 113917) as startstatusdate,
(select max(statusdate)
from Table A
where statusid = 49938) as endstatusdate
from Table A
group by practid