não tem nada de errado ... eu testei assim e funcionou:
create table #Competidor
(
Id_Categoria int,
Codigo int
)
create table #Finish
(
Id_Competidor int,
Id_Chegada int
)
set nocount on
insert into #Competidor (Id_Categoria, Codigo) values (1, 1)
insert into #Competidor (Id_Categoria, Codigo) values (1, 2)
insert into #Competidor (Id_Categoria, Codigo) values (1, 3)
insert into #Competidor (Id_Categoria, Codigo) values (2, 4)
insert into #Finish (Id_Competidor, Id_Chegada) values (1, 1)
insert into #Finish (Id_Competidor, Id_Chegada) values (4, 2)
insert into #Finish (Id_Competidor, Id_Chegada) values (3, 3)
insert into #Finish (Id_Competidor, Id_Chegada) values (2, 4)
Select
#Competidor.[Id_Categoria],
#Competidor.[Codigo],
#Finish.[Id_Competidor],
#Finish.[Id_Chegada]
FROM #Competidor, #Finish
WHERE #Competidor.[Codigo] = #Finish.[Id_Competidor]
Order BY #Competidor.[Id_Categoria];
drop table #Competidor
drop table #Finish