ric*_*mer 3 sql sql-server temp-tables sql-server-2008
这是样本表
我需要实现的是仅获取或显示月份值最高的租户记录.如果月份相等,我需要根据最新的日期值.这是所需的输出样本
有了这个,我开始使用这个代码使用max函数并合并临时表,但无法获得所需的结果.
select tenant, name, date, month
into #sample
from tenant
select *
from #sample
where months = (select max(months)from #sample)
Run Code Online (Sandbox Code Playgroud)
并输出到这样的东西.我相信,代码在整个列表中获得最大值而不考虑每个租户过滤.
任何帮助将不胜感激 :)
这可以通过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
Run Code Online (Sandbox Code Playgroud)
你可以使用一个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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2661 次 |
| 最近记录: |