Ayuda SQL

ValaV

pues eso, tengo que acer un procedimieto en sql pero me da un error, se trata de una lista de participantes ordenados por puentuaciones tengo que coger el 4º (usando programacion SQL) , el problema es que estan del 3 al 6 estan empatados.
postearia el codigo, pero es demasiado
si alguien controla que me mande un mensaje o me agrege al msn wencesbc@spymac.com y le paso el codigo

editado

es windows xp kn mssql 2000

atEr

especifica pl/sql para que este mas claro , no es dificil lo que quieres hacer piensa un poco mas xD

ValaV

Esto es lo que tengo, es un lio k kuesta entender
lo k agoes restar 1 a la puntuacion maxima, y si existe sumo uno a contador, y miro si existe otro kn los mismos puntos y licencia distinta

declare @p_max as nvarchar (6)
select top 1 @p_max = re.puntuacion
from resultados as re
join deportes as de
on de.cod_dep=re.cod_dep
where de.deporte='AJEDREZ'
order by re.puntuacion desc
select @p_max
declare @licencia as nvarchar (9)
declare @contador as integer
set @contador=0
while @p_max>0 and @contador <= 3
begin
if exists(select re.licencia
from resultados as re
join deportes as de
on de.cod_dep=re.cod_dep
where re.puntuacion = @p_max and de.deporte='AJEDREZ')
begin
select @licencia=re.licencia
from resultados as re
join deportes as de
on de.cod_dep=re.cod_dep
where re.puntuacion = @p_max and de.deporte='AJEDREZ'
set @contador = @contador + 1
while @contador<=3 and exists(select re.licencia
from resultados as re
join deportes as de
on de.cod_dep=re.cod_dep
where re.puntuacion = @p_max and de.deporte='AJEDREZ' and re.licencia<>@licencia)
begin
select @licencia=re.licencia
from resultados as re
join deportes as de
on de.cod_dep=re.cod_dep
where re.puntuacion = @p_max and de.deporte='AJEDREZ' and re.licencia<>@licencia
set @contador = @contador + 1
end
end
if @contador = 4
break
else
begin
set @p_max=@p_max-1
continue
end
end
select pa.nombre,pa.apellido1,pa.apellido2,@p_max
from participantes as pa
where pa.licencia=@licencia

Abreu

Se me ocurre en una sentencia (no se si funcionaria):

SELECT * FROM participantes
WHERE puntuacion=(SELECT MIN(puntuacion) FROM participantes
WHERE puntuacion>=ALL(SELECT TOP 4 puntuacion FROM participantes ORDER BY puntuacion DESC))

Usuarios habituales

  • Abreu
  • ValaV
  • atEr