niestety ta query jest bledna, bo max(data) z podzapytania zwraca max z calej tabeli
dane testowe:
declare @T table (nr int, wart int, data datetime)
insert into @T
select 35, 1, '15:01:01' union all
select 35, 2, '15:03:01' union all
select 35, 2, '15:10:01' union all
select 36, 1, '15:01:11' union all
select 36, 2, '15:03:12' union all
select 36, 2, '15:10:01' union all
select 36, 2, '15:11:01' union all
select 37, 1, '15:01:21' union all
select 37, 2, '15:03:21' union all
select 37, 1, '15:07:21'
query1 - max data dla danego numeru
SELECT nr, max(data) FROM @T
group by nr
query 2 - przed ostatnia data dla danego numeru (nie uwzglednia ze dla danego nr jes tylko jeden wpis)
select T.nr, max(T.data) from
(select nr, max(data) as maxData FROM @T group by nr) M
inner join @T T on M.nr=T.nr and T.data<M.maxData
query 3 - uwzglednia sytuacje kiedy dla danego nr jest tylko jedna data (lub kilka takich samych)
select nr, max(data) from
(
select isnull(T.nr, M.nr) as nr, isnull(T.data,M.maxData) as data from
(select nr, max(data) as maxData FROM @T group by nr) M
left join @T T on M.nr=T.nr and T.data<M.maxData
) T
group by nr
group by T.nr