Tenho uma tabela agrupada que se parece com esta:
Data_final_do_mês | VersãoId |
---|---|
2024-06-30 | 1 |
2024-06-30 | 2 |
2024-07-31 | 1 |
2024-07-31 | 2 |
2024-07-31 | 3 |
2024-07-31 | 5 |
Para cada fim de mês, quero puxar o Max Version Id para que no final eu tenha datas de Fim de mês exclusivas e max(VersionId)'s . Tentei escrever o código, mas não está funcionando corretamente.
select distinct c.END_OF_MONTH_DATE, c.VERSION_ID, 'Assets'
from dbo.Contracts_Version_Details c
inner join(
select distinct max(c1.Version_Id) as MaxVersionId, c1.END_OF_MONTH_DATE
from dbo.Contracts_Version_Details c1
group by c1.End_of_month_date) mv
on c.VERSION_ID = mv.MaxVersionId
inner join(
select distinct max(c2.END_OF_MONTH_DATE) as MaxDate, c2.VERSION_ID
from dbo.Contracts_Version_Details c2
group by c2.VERSION_ID
) as md
on c.END_OF_MONTH_DATE = md.MaxDate
Que tal isso?
Isso pode te deixar mais perto:
MAX(VersionId) OVER (PARTITION BY End_of_Month_Date)
é o suficiente.