Я бы сказал, что: (SQL Server Solution)
create table #temp (studentId int, studentName nvarchar(75), course_name nvarchar(75),subscribed nvarchar(3))
insert into #temp values (1,'James','English','Yes')
insert into #temp values (2,'Victor','Arabic','No')
insert into #temp values (2,'Victor','Chinese','Yes')
insert into #temp values (2,'William','Chinese','Yes')
select * from (select * from #temp) t1 pivot(max(subscribed) for course_name in ([English],[Arabic],[Chinese]))t1
studentId studentName English Arabic Chinese
1 James Yes NULL NULL
2 Victor NULL No Yes
2 William NULL NULL Yes