У меня есть следующий запрос
select distinct S.Semana, V.Codigo, Max(V.Fecha) as Fecha
FROM Visitas V
left join CSemanas S ON V.Fecha between S.Inicio and S.Fin
group by S.Semana, V.Codigo
, который дает мне следующий результат
Что теперь Мне нужно показать последнюю запись по коду самой последней даты, то есть я не хочу, чтобы коды повторялись. Например, как видно, код 01743 повторяется, и 02834 из них просто хотят самую последнюю запись.
Ты можешь получать результат, который ты хочешь используя ROW_NUMBER (), чтобы нумеровать линии и позже выбирать одни в частности.
я использовал следующие данные, чтобы симулировать результат твоей консультации:
create table t (Semana int, Codigo int, Fecha date);
insert into t values
(01, 100, '20190101'),
(02, 100, '20190108'),
(01, 200, '20190101'),
(02, 200, '20190108');
Достаточен использовать твой query в консультации CTE или как sub-query и выбирать реестры с row_number = 1.
with ct as
(
select distinct
Semana, Codigo, Fecha,
row_number() over (partition by Codigo order by Fecha desc) rn
from
t
)
select
Semana, Codigo, Fecha
from
ct
where
rn = 1;
Восток - результат:
Semana | Codigo | Fecha
-----: | -----: | :------------------
2 | 100 | 08/01/2019 00:00:00
2 | 200 | 08/01/2019 00:00:00
db<> fiddle here