На основе следующей таблицы
Table_A
ID Rev Description
-----------------------------------
1 1 Some text.
1 2 Some text. Adding more.
1 3 Some text. Ading more & more.
Выше будет добавляться новая строка, когда пользователь обновляет описание.
Я хочу взять строку с MAX (Rev) [т.е.последнее описание.
Чтобы получить это, я делаю следующее:
;with AllDescriptions As
(
select
ID
, Rev
, Description
, ROW_NUMBER() over (partition by ID order by Rev desc) as RowNum
from Table_A
Where ID = 1
)
select ID, Rev, Description from AllDescription
where RowNum = 1
Недавно я увидел другой подход к получению того же результата
select b.* from
(
select ID, MAX(Rev) as MaxRev
from Table_A
where ID = 1
group by ID
) as a
inner join
(
select ID, Rev, Description from Table_A where ID = 1
) as b
on a.ID = b.ID and a.MaxRev = b.Rev
С точки зрения обучения я хочузнаете, какой из двух вышеперечисленных подходов лучше?Или если есть еще лучший способ сделать то же самое?