Получить всю строку, которая имеет значение MAX столбца SQL Server 2008 - PullRequest
3 голосов
/ 16 июня 2011

Sample

Я хочу сделать это в SQL Server 2008. Есть идеи?

1 Ответ

10 голосов
/ 16 июня 2011

Как это?

Настройка:

declare @MyTable table(Year int, Month int, Day int, Total int)

insert @MyTable
values
    (2005, 9, 23, 12),
    (2005, 9, 26, 5),
    (2005, 9, 24, 1),
    (2005, 9, 15, 28),
    (2005, 9, 21, 1),
    (2005, 9, 13, 1),
    (2005, 10, 31, 5),
    (2005, 11, 18, 115),
    (2005, 11, 20, 1),
    (2005, 11, 11, 1),
    (2005, 11, 19, 1)

Запрос:

;with cte
as
(
    select *,
        row_number() over(partition by Year, Month order by Total desc) RowNumber
    from @MyTable
)
select Year, Month, Day, Total 
from cte
where RowNumber = 1

Вывод:

Year        Month       Day         Total
----------- ----------- ----------- -----------
2005        9           15          28
2005        10          31          5
2005        11          18          115
...