PARTITION BY函数

1、PARTITION BY

开窗函数,

使用场景,在合同表里,获取所有房源在最新的合同编号。或者获取每个班级每次考试的第一名。

区别聚合函数:对于每个每个分组返回多行,而聚合函数对于每个分组只返回一行,

使用:

1 SELECT  ROW_NUMBER() OVER ( PARTITION BY ext.RoomNO, ext.OrderNO ORDER BY rp.FDate1 DESC ) rn ,
2         rp.FContractNo ,
3         rmi.IRoomNO
4 FROM    t_RPContract rp
5         JOIN T_ContractExtend ext ON ext.FContractID = rp.FContractID
6         JOIN dbo.FY_RoomItems rmi ON rmi.RoomNO = ext.RoomNO
7                                      AND rmi.OrderNO = ext.OrderNO;

按照房源编号分组,给每一组进行按时间排序

结果如下

如上图所示,房源ZZ00000001Z,按照时间倒序排列,并给每一类加一个序号,所以所有序号为1 的数据都是最新的一条数据。

2、over partition by与group by的区别:

group by是对检索结果的保留行进行单纯分组,一般和聚合函数一起使用例如max、min、sum、avg、count等一块用。

partition by虽然也具有分组功能,但同时也具有其他的高级功能。

猜你喜欢

转载自www.cnblogs.com/MirZhai/p/9997513.html
今日推荐