2013-08-03 4 views
-2
Type major minor build module 
---- ----- ----- ----- ----- 
290 0  0  1  Name1 
290 1  0  1  Name1 
290 1  0  2  Name1 
300 0  0  1  Name2 
300 2  0  1  Name2 
300 2  1  1  Name2 

Я пытался получить запрос, чтобы показать только те строки, с самой высокой версии, по типу, на основе трех столбцов (major.minor.build). Имя модуля заменит тип модуля.Самый высокий ряд, основанный на трех колонках, в группе

на основе выборочных данных результаты должны быть:

Type major minor build module 
---- ----- ----- ----- ------ 
290  1  0  2  Name1 
300  2  1  1  Name2 
+0

Проблема достигает наивысшего уровня для каждого типа. –

ответ

0

Это следует сделать это:

SELECT TOP 1 * FROM myTable ORDER BY major DESC, minor DESC, build DESC 
+0

+1 к этому, так как _ для каждого типа_ был добавлен позже –

4

Чтобы получить высокий для каждого типа, вы можете запросить, например, например:

;with cte as (
    select Type, major, minor, build, module 
     rn = row_number() over (partition by Type 
      order by major desc, minor desc, build desc) 
    from TableName 
) 
select Type, major, minor, build, module 
from cte 
where rn=1 
+0

Должны ли быть еще скобки в конце строки три? –

+0

@ mythago.wolf да, исправлено. Это один из рисков не беспокоить использование правильных возвратов каретки и избегать горизонтальной прокрутки. –

+0

@ mythago.wolf, верно, похоже, я не следовал правилу _type и скобки сразу, а затем введите между_. Спасибо Аарону за исправление. –

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