这是样本表
我需要实现的是获取或仅显示月份值最高的租户记录。如果月份相等,我需要根据最新的日期值。以下是所需的输出样本
有了这个,我开始使用这个代码使用max函数并合并了临时表,但无法获得所需的结果。
select tenant, name, date, month
into #sample
from tenant
select *
from #sample
where months = (select max(months)from #sample)
并输出到这样的东西。我相信,代码在整个列表中获得最大值而不考虑每个租户过滤。
任何帮助将不胜感激:)
答案 0 :(得分:6)
这可以通过row_number
窗口函数来完成:
select tenant, name, date, months
from (select t.*,
row_number() over (partition by t.tenant, t.name order by t.months desc, t.date desc) as rn
from TableName t) x
where rn = 1
答案 1 :(得分:5)
您可以使用row_number
功能。
<强>查询强>
;with cte as
(
select rn = row_number() over
(
partition by tenant
order by months desc,[date] desc
),*
from table_name
)
select tenant,name,[date],months from cte
where rn = 1;