Использовать Группировать по, Агрегировать мин. И макс. И функцию датировки
Пример таблицы и данных
declare @roombookingdata table
(id int ,room varchar(1), status varchar(10), recorddate date)
insert into @roombookingdata
(id , room , status , recorddate)
values
(1 , 'A' , 'In' , '2018-01-10'),
(2 , 'A' , 'Stay ', '2018-01-11'),
(3 , 'A' , 'out' , '2018-01-12'),
(4 , 'B' , 'In' , '2018-01-12'),
(5 , 'B' , 'Stay' , '2018-01-13'),
(6 , 'B' , 'Out' , '2018-01-14'),
(7 , 'A' , 'In' , '2018-01-14'),
(8 , 'A' , 'Stay' , '2018-01-15'),
(9 , 'A' , 'Stay' , '2018-01-16'),
(10 , 'A' , 'Out' , '2018-01-17')
Запрос
select room, DateDiff(d, min(recorddate) , max(recorddate) ) as NooFDays, min(recorddate) as mindate, max(recorddate) as maxDate
from @roombookingdata
group by room