请问Oracle有没有这样的功能?

发布于 2022-08-27 11:59:44 字数 1262 浏览 20 评论 0

抱歉,因为问题难以表述,只能这样提问了。 我想实现的是:先按某个字段归类后求出最大值,然后再求出值为最大的记录的其他信息(非group by 中的字段),这时会出现多个记录的值都为最的记录。 比如:表中F_XMBH(项目编号),F_XMMC,F_JE(金额),F_USER(使用人),我想按项目编号来归类求出金额最大的记录, 然后求出展示金额最大的记录的使用人情况,这时有可能项目值为最的的项目编号会有多条,即使用人a和b, 都对应最大值,但在展示的时候,我希望是项目编号只有一条,把使用人按'a,b'. 展示的效果如下: 最大值记录:

FXMBHFXMMCMAX(F_JE)
001AA123,00.00
0002BB1456.00

使用人情况:

F_XMBHF_XMMCF_JEF_USER
001AAUSER_A123,00.00
001AAUSER_B123,00.00

展示效果:

FXMBHFXMMCFJEFUSER
001AAUSERA,USERB123,00.00

这个功能我知道通过多次遍历可以实现,但是业务中数据量比较大,能否通过oracle自身的功能实现这个效果。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

迷荒 2022-09-03 11:59:44

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)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文