请问Oracle有没有这样的功能?
抱歉,因为问题难以表述,只能这样提问了。 我想实现的是:先按某个字段归类后求出最大值,然后再求出值为最大的记录的其他信息(非group by 中的字段),这时会出现多个记录的值都为最的记录。 比如:表中F_XMBH(项目编号)
,F_XMMC,F_JE(金额)
,F_USER(使用人)
,我想按项目编号
来归类求出金额最大
的记录, 然后求出展示金额最大的记录的使用人
情况,这时有可能项目值为最的的项目编号会有多条
,即使用人a和b, 都对应最大值,但在展示的时候,我希望是项目编号只有一条
,把使用人按'a,b'. 展示的效果如下: 最大值记录:
FXMBH | FXMMC | MAX(F_JE) |
001 | AA | 123,00.00 |
0002 | BB | 1456.00 |
使用人情况:
F_XMBH | F_XMMC | F_JE | F_USER |
001 | AA | USER_A | 123,00.00 |
001 | AA | USER_B | 123,00.00 |
展示效果:
FXMBH | FXMMC | FJE | FUSER |
001 | AA | USERA,USERB | 123,00.00 |
这个功能我知道通过多次遍历可以实现,但是业务中数据量比较大,能否通过oracle自身的功能实现这个效果。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
10g版本:
select FXMBH, FXMMC, wmsys.wm_concat(FUSER), max(FJE) from t group by FXMBH, FXMMC
由于wmsys.wm_concat是内部函数,如果是11g版本的话建议使用listagg函数替代,例如:
LISTAGG(FJE) WITHIN GROUP (ORDER BY FJE)