首页 > 数据库技术 > 详细

SQL PARTITION BY用法

时间:2021-07-21 23:04:03      阅读:24      评论:0      收藏:0      [点我收藏+]

业务描述:

1、如下图所示,有一张表,该表存储某一公司某一部门下当前的预算详情。

预算可以进行多次修订,并且每一次修订的版本需要保留,所以每次修改预算都会新增一条数据到该预算信息表,同时CreateTime是操作数据库当时的时间。

技术分享图片

 

2、某一部门下的预算可以通过科目Code进行详细拆分、所以针对该预算主表设计一个预算明细表,两者通过主表的ID和存表的FID进行关联。

表存储数据如下:

技术分享图片

 

3、需求:报表需要显示公司下所有部门的最新预算信息       数据库数据分析:同一个部门如果多次修订预算,则会存在多条数据,通过CreateTime区分哪条数据是最新的数据。

4、SQL 语句

select * from (

  select *,ROW_NUMBER() over(partition by [CompanyId] ,[DeptId],[AccountCode] order by [CreateTime] desc) ranks 
  from [P_Budget_BasicInfo] as b
       left join P_Budget_DetailInfo as d on b.ID=d.FID
  ) a
where a.ranks=1                    

5、解析:partition by :分区;按[CompanyId] ,[DeptId],[AccountCode]分区,依据[CreateTime]排序,就可以获取到

SQL PARTITION BY用法

原文:https://www.cnblogs.com/Joanna-net/p/15035432.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!