Sql Server ROW_NUMBER()窗口函数,查询每个分支的最新记录

ROW_NUMBER() 函数是数据库中的一个窗口函数(Window Function),可以用于为结果集中的每一行分配一个唯一的连续整数。结合使用 OVER 子句和 PARTITION BYORDER BY 时,ROW_NUMBER() 可以提取每个分支(Name)的最新记录。

下面是模拟SQL:table:YourTableName;field:Name,Create_Date,,,,,,,

数据改造,

SELECT 
 ROW_NUMBER() OVER (PARTITION BY Name ORDER BY Create_Date DESC) AS rn,
 Name,
 Create_Date  
FROM YourTableName 

查询结果

完整SQL:查询每个分支(Name)的最新记录。

SELECT *  
FROM (  
    SELECT *,  
           ROW_NUMBER() OVER (PARTITION BY Name ORDER BY Create_Date DESC) AS rn  
    FROM YourTableName  
) AS RankedResults  
WHERE rn = 1;

SQL解析

ROW_NUMBER() OVER (PARTITION BY Name ORDER BY Create_Date DESC) AS rn 

1、OVER 子句:这个子句定义了窗口函数的作用范围,即哪些行会被考虑在内以进行行号的分配。

2、PARTITION BY Name:这里指定了分区的依据。在这个例子中,ROW_NUMBER() 函数会根据 Name列的值将数据分为多个分区。每个分支(Name)的数据都会被视为一个独立的集合,在每个集合内部独立地分配行号。这意味着,每个分支的第一行都会被赋予行号1,第二行被赋予行号2,依此类推,即使这些行在全局排序中可能并不相邻。

3、ORDER BY Create_Date DESC:这里是指定了在每个分区内如何对数据进行排序,以决定行号的分配顺序。在这个例子中,数据会根据 Create_Date列的值降序排列。也就是说,在每个分区(即每个分支)内,最新的 Create_Date 会被赋予行号1,次新的被赋予行号2,依此类推。

总结:这个查询的作用是为每个分支(Name)内的记录按照 Create_Date 的降序排列,并为这些记录分配一个唯一的连续整数(行号)。这对于提取每个分支的最新记录、前几名记录等场景非常有用。

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值