Вы можете получить желаемый результат с условным агрегированием:
declare @tmp table(
ReportNumber int,
Datecreated date,
Name varchar(50),
Question varchar(50),
Answer varchar(50)
)
insert into @tmp values
(123, '2018-04-24', 'Shane', 'City' ,'Dallas')
,(123, '2018-04-24', 'Shane', 'Hotel' ,'Marriott')
,(123, '2018-04-24', 'Shane', 'Rating' ,'Green')
,(123, '2018-04-24', 'Shane', 'Comments' ,'Very Good')
,(123, '2018-04-24', 'Shane', 'TransportationMode' ,'Van')
,(124, '2018-04-24', 'Ralph', 'Hotel' ,'Houston')
,(124, '2018-04-24', 'Ralph', 'City' ,'Hilton')
,(124, '2018-04-24', 'Ralph', 'Rating' ,'Yellow')
,(124, '2018-04-24', 'Ralph', 'Comments' ,'Decent')
,(124, '2018-04-24', 'Ralph', 'TransportationMode' ,'Van')
select ReportNumber, Datecreated,
max(case when Question='City' then Answer else '' end) as City,
max(case when Question='Hotel' then Answer else '' end) as Hotel,
max(case when Question='Rating' then Answer else '' end) as Rating,
max(case when Question='Comments' then Answer else '' end) as Comments,
max(case when Question='TransportationMode' then Answer else '' end) as TransportationMode
from @tmp
group by ReportNumber, Datecreated
Результат: