si, pero idregistro es una llave foranea, es decir, puede estar repetido,
para este caso se requiere de una llave primaria o column unique, que identifique de manera unica cada uno de los registros en la tabla de detalle...
si es sql 2000 no puedes ponerle una variable tendrias que manejarlo con sql dinamico..
por ejemplo...
Código:
DECLARE @nSQL nvarchar(4000), @TopN int
SET @TopN = 3
SET @nSQL = N'SELECT T1.IDREGISTRO '
+ N' , T1.FECHAREGISTRO '
+ N' , T1.NOMBREREGISTRO '
+ N' , T2.PARTICIPANTEREGISTRO '
+ N' , T2.COCHEREGISTRO '
+ N'FROM TABLA1 T1 '
+ N'INNER JOIN TABLA2 T2 '
+ N'ON T1.IDREGISTRO = T2.IDREGISTRO '
+ N'WHERE T2.PARTICIPANTEREGISTRO IN '
+ N' (SELECT TOP ' + cast(@TopN as varchar) + ' PARTICIPANTEREGISTRO FROM TABLA2 WHERE IDREGISTRO = T1.IDREGISTRO )'
sp_executesql @nSQL