oracle按某些字段分组后从每组中取出最大的一条记录 row_number() over(partition by)
问题描述
按工单+项次从所有发料明细中取出发料数量最大的那一条
源数据
select sfdc001,sfdc002,sfdd007
from sfdc_t
left join sfda_t on sfdadocno=sfdcdocno
left join sfdd_t on sfdddocno=sfdcdocno and sfdcseq=sfddseq
where sfdcent=1 and sfdc001||sfdc002 in('09-S901-21010042510','09-S902-20120149340','09-S904-20120147670' ) --工单单号||项次 and extract(year from sfda001)=2021 --年度and extract(month from sfda001)=1 --月份and sfdastus<>'X'
order by sfdc001,sfdc002
解决方案
--取工单||项次发料数量最大的那一条
select * from (
select sfdc001,sfdc002,sfdd007,
row_number() over(partition by sfdc001,sfdc002 order by sfdd007 desc) rn
from sfdc_t
left join sfda_t on sfdadocno=sfdcdocno
left join sfdd_t on sfdddocno=sfdcdocno and sfdcseq=sfddseq
where sfdcent=1 and sfdc001||sfdc002 in('09-S901-21010042510','09-S902-20120149340','09-S904-20120147670' ) --工单单号||项次 and extract(year from sfda001)=2021 --年度and extract(month from sfda001)=1 --月份and sfdastus<>'X'
) where rn=1
结果
知识点
row_number() over( partition by 分组字段 order by 排序字段 desc)
多用于对数据进行分组排序,并对每个组中的数据分别进行编号,编号从1开始递增,每个组内的编号不会重复
mysql中如何实现该操作?
Mysql分组查询每组最新的一条数据(三种实现方法)
https://blog.csdn.net/weixin_44606481/article/details/128200727
oracle按某些字段分组后从每组中取出最大的一条记录 row_number() over(partition by)相关推荐
- oracle按某个字段分组然后从每组取出最大的一条纪录
需求:查询各个设备存在未消缺的缺陷,取缺陷等级最高的,作为这个设备当前的缺陷等级: 数据源: select t.device_id, t.defect_levelfrom sp_pd_defect t ...
- 1.(group by)如何让group by分组后,每组中的所有数据都显示出来
问题描述:表如下,如何让这个表按device_id这个字段分组,且组中的每条数据都查寻出来?(假如说这个表名为:devicedata) 错误答案:select * from devicedata GR ...
- oracle 取分组第一行,oracle分组后取每组第一条数据
oracle 分组后取每组第一条数据 '数据格式 分组取第一条的效果 sql SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION BY x ORDER ...
- mysql分组取所有数据_mysql 分组后取每个组内最新的一条数据
首先,将按条件查询并排序的结果查询出来. mysql> select accepttime,user,job from tuser_job where user =8 order by acce ...
- JAVA使用stream对数据分组后求每组的最大值
JAVA stream对数据分组后求每组的最大值 具体需求 对industryCode分组,然后通过取出每组的num的最大值 // 实体类 @Data @AllArgsConstructor publ ...
- mysql查询数据分组后保留每组前n条数据
最近做项目遇到一个这样需求的sql语句,根据一系列的条件后,分组查询出来的数据是这样的 可以看到用户id=4 的有三条数据,用户id=1的有两条数据. 我需求是相同的用户id只取最多两条数据,也就如下 ...
- WIN10下安装Oracle提示无法添加用户XXXX到XXXX组中办法
WIN10下安装Oracle提示"无法添加用户XXXX到XXXX组中"办法 一般安装过程中不会提示这样的错误.不幸的是我遇到了,然后记录分享一下解决方法: 1.找到安装日志文件 ( ...
- es 指定排序字段_ES里多字段分组后排序
ES里多字段分组再排序,只有两种办法,其他办法都不准: 办法一:用script 如 //主桶:设置要聚合的字段,sql TermsBuilder one = AggregationBuilders.t ...
- Oracle 以某字段分组,以某字段排序,取前几条
select * from (select row_number() over(partition by 以此字段为分组 order by 以此字段排序 desc rn from dual) whe ...
最新文章
- python strip
- 关于DMA,TCM(ITCM和DTCM)和Cache的理解
- springmvc教程(4)
- python 中的路径. ./ .. ../和相对路径的写法
- hashmap实现倒排索引——查询多个单词出现在多个句子中
- DataGridView的DataGridViewComboBoxColumn列点击一次
- C语言:格式字符串中的类型
- 有关ArrayList的toArray()方法的一些探究
- 教你怎么蹭网实现和dualwan双倍网速上网
- 开放式关系抽取_有效的开放式合作伙伴关系的3课
- 关于清除贴图与光域网路径
- imewlconverter 制作Rime词库
- NumPy学习挑战第一关-NumPy的下载与安装
- H5社交漂流瓶交友源码/附安装教程
- 学生综合素质评价系统c语言,学生综合素质评价表自我评价范文(2)
- 我的秋招圆满落幕了,很开心
- 【链表】 链表的基本概念及分类
- 2020/08/28 周末计划
- Stata:缺失值的填充和补漏
- iPhone X下界面满屏展示