提问人:Simma 提问时间:8/26/2022 最后编辑:marc_sSimma 更新时间:8/27/2022 访问量:43
需要对 SQL Server 中的数据进行排名
Need to rank the data in SQL Server
问:
从输入数据中,我需要对 .数据按时间升序排列。id
示例:ID 号 421492036 有两条代码为“05”的记录,并按时间升序排序。
ID 421492036具有相同的代码 05,并且是表中的前两条记录。
因此,它在输出 1 表中的排名应为 1。
在输出 2 表中,我们需要根据时间获取 id 421492036第一条记录。
有可能变成这样吗?
答:
1赞
The Impaler
8/27/2022
#1
根据 SQL Server 文档,在所有受支持的 SQL Server 版本上都可用。如果升级到当前版本之一,则可以运行查询:DENSE_RANK()
select max(id), max(code), max(time), rk
from (
select t.*, dense_rank() over(order by time) as rk from t
) x
group by rk
0赞
siggemannen
11/28/2023
#2
您可以执行 TOP 1 WITH TIES 以仅获取第一行:
create table #t_id(id int, code varchar(30), time datetime)
insert into #t_id (id, code, time)
select 1, '05', '20200101'
union all
select 1, '05', '20200102'
union all
select 3, '05', '20200101'
select TOP 1 WITH TIES *
from #t_id t
ORDER BY (SELECT COUNT(*) FROM #t_id t2 WHERE t2.id = t.id AND t2.time < t.time)
COUNT(*) FROM #t_id t2 WHERE t2.id = t.id AND t2.time < t.time
可用于以 '2005 的方式进行 RANKing
评论