2012-05-31 5 views
1

Как я могу изменить этот запрос, чтобы возвращать отдельные столбцы Models и VideoProcessor?SQL Server 2005, запрос SELECT DISTINCT

SELECT TOP(20) * 
FROM 
    (SELECT 
     [3D_Benchmarks].Id AS BenchmarkId, 
     Manufacturer, Model, Slug, VideoProcessor, 
     FPS, CPU 
    FROM 
     [3D_Benchmarks] 
    JOIN 
     [3D_Slugs] ON [3D_Benchmarks].Id = [3D_Slugs].BenchmarkId) AS tb 
ORDER BY 
    tb.FPS DESC; 

ответ

2

Новый ответ на основе вашего комментария. Это поднимает двадцатку самых высоких моделей FPS + VideoProcessor. Для каждого из них он выбирает строку с самым высоким FPS.

select details.Model 
,  details.VideoProcessor 
,  details.FPS 
,  <add other columns here> 
from (
     select top 20 b.Model 
     ,  VideoProcessor 
     from [3D_Benchmarks] b 
     join [3D_Slugs] s 
     on  b.Id = s.BenchmarkId 
     group by 
       b.Model 
     order by 
       max(b.FPS) desc 
     ) top20 
cross apply 
     (
     select top 1 * 
     from [3D_Benchmarks[ b 
     join [3D_Slugs] s 
     on  b.Id = s.BenchmarkId 
     where b.Model = top20.Model 
       and b.VideoProcessor = top20.VideoProcessor 
     order by 
       b.FPS desc 
     ) details 
+0

Спасибо, но это возвращает только две колонки. Мне нужны все вышеупомянутые столбцы с этими двумя отдельными (модель и видеопроцессор), я не знаю, как совместить этот запрос с моим запросом –

+1

Скажем, есть две строки с Model = '3000' и VideoProcessor = 'AwesomeGpu', одна с 100 FPS и один с 50 FPS. Какое значение FPS вы хотите отобразить? – Andomar

+0

Я хочу отображать верхние 20 с максимальным fps, но не тот же режим с тем же видеопроцессором –

Смежные вопросы