Вот версия, которая разделяет строку / массив через запятую и затем используется в соединении со студентами.
declare @IDs varchar(max)
set @IDs = '4,2,3,5,7'
;with cte
as
(
select
left(@IDs, charindex(',', @IDs)-1) as ID,
right(@IDs, len(@IDs)-charindex(',', @IDs)) as IDs,
1 as Sort
union all
select
left(IDs, charindex(',', @IDs)-1) as ID,
right(IDs, len(IDs)-charindex(',', IDs)) as IDs,
Sort + 1 as Sort
from cte
where charindex(',', IDs) > 1
union all
select
IDs as ID,
'' as IDs,
Sort + 1 as Sort
from cte
where
charindex(',', IDs) = 0 and
len(IDs) > 0
)
select
cte.ID as StudentID,
Students.StudentName
from cte
inner join Students
on cte.ID = Students.StudentID
order by cte.Sort
Кстати, есть несколько способов разбить строку. Поиск по SO даст вам много выбора.