У меня есть простой запрос, и мне интересно, может ли он быть более элегантно закодирован. Окончательное решение должно соответствовать требованиям.
Мне нужно получить последнее значение из таблицы на основе даты и версии. Образец объяснил бы более четко:
declare @t table (id int, due_date smalldatetime, version int, value nvarchar(10))
insert into @t select 3, '1/1/2010', 1, 'value 1'
insert into @t select 3, '1/1/2010', 2, 'value 2'
insert into @t select 3, '3/1/2010', 1, 'value 3'
insert into @t select 3, '3/1/2010', 2, 'value 4'
insert into @t select 3, '3/1/2010', 3, 'value 5'
insert into @t select 3, '3/1/2010', 4, 'value 6'
insert into @t select 3, '4/1/2010', 1, 'value 7'
insert into @t select 3, '4/1/2010', 2, 'value 8'
insert into @t select 3, '4/1/2010', 3, 'value 9'
select value from @t t
inner join (select due_date, version=max(version)
from @t where due_date = (select max(due_date) from @t) group by due_date) maxes
on t.due_date=maxes.due_date and t.version=maxes.version
Так что я ожидаю, что результат будет
value 9
, который основан на вышеуказанном запросе.
Я не особенно доволен этим решением - есть ли лучшие способы сделать это?