首页 > 其他分享 >LISTAGG代替WM_CONCAT

LISTAGG代替WM_CONCAT

时间:2022-09-27 09:48:57浏览次数:61  
标签:RCLASS CONCAT WM BANK LISTAGG SELECT

  1. wm_concat可能会因为数据库版本的不同 返回clob或者varcahr2字段,增加线上报错概率比如ORA-22922
  2. wm_concat聚合的字段没有固定的顺序,listagg可以根据字段排序
  3. listagg的性能比wm_concat好
  4. wm_concat函数是可以支持distinct的,但是listagg分析函数是不支持distinct的,只能先去重再聚合
尽量使用LISTAGG代替WM_CONCAT

测试数据

SELECT * FROM TEST_IGNORE;

使用wm_concat

SELECT T.RCLASS,
       WMSYS.WM_CONCAT(T.BANK) AS BANK
FROM TEST_IGNORE T
GROUP BY T.RCLASS;

去重后

SELECT T.RCLASS,
       WMSYS.WM_CONCAT(distinct T.BANK) AS BANK
FROM TEST_IGNORE T
GROUP BY T.RCLASS;

使用listagg

SELECT t.rclass,
       LISTAGG( t.bank,',') WITHIN GROUP(order by t.id) as BANK
FROM TEST_IGNORE t
GROUP BY T.RCLASS;

listagg去重

SELECT T.RCLASS,
       LISTAGG(T.BANK, ',') WITHIN GROUP(ORDER BY T.ID) AS BANK
FROM (SELECT T.RCLASS,
             T.BANK,
             T.ID
      FROM (SELECT T.RCLASS,
                   T.BANK,
                   T.ID,
                   ROW_NUMBER() OVER(PARTITION BY T.RCLASS, T.BANK ORDER BY T.ID) AS RN
            FROM TEST_IGNORE T) T
      WHERE RN = 1) T
GROUP BY RCLASS;
参考:尽量使用LISTAGG代替WM_CONCAT

标签:RCLASS,CONCAT,WM,BANK,LISTAGG,SELECT
From: https://www.cnblogs.com/aspirant/p/16733405.html

相关文章

  • Stream流中的常用方法_concat
    组合:concat如果有两个流,希望合并成为一个流,那么可以使用Stream 接口的静态方法concat:static<T>Stream<T>concat(Stream<?extendsT>a,Stream<?extendsT>b)......
  • WMS 相比于 ERP 系统有哪些优势?
    WMS与ERP系统是两个不同的系统,不存储优势的比较!WMS是仓库管理系统(WarehouseManagementSystem)的缩写,ERP是EnterpriseResourcePlanning,即企业资源计划。尽管WMS/ERP都......
  • Stream流中的常用方法skip和concat
    Stream流中的常用方法skipStream流中的常用方法_skip:用于跳过元素如果希望跳过前几个元素,可以使用skip方法获取一个截取之后的新流:Stream<T>skip(longn);......
  • i3wm 配置
    目录~/.config/i3/config/usr/bin/i3exit~/.config/i3/config#浮动窗口for_window[class="Thunar"]floatingenablefor_window[class="Xarchiver"]floatingenabl......
  • WPF DevExpress怎么绑定ViewModel事件
    XAML代码<dxg:GridControl.View><dxg:TableViewx:Name="ProductGridView"ShowGroupPanel="False"AllowColumnFilterin......
  • i3wm 取消锁屏
    i3wmdisablei3lock编辑配置文件~/.config/i3/config注释i3lock所在行,最终效果如下#xss-lockgrabsalogindsuspendinhibitlockandwillusei3locktolock......
  • debian touchpad i3wm 触摸板配置
    编辑/usr/share/X11/xorg.conf.d/40-libinput.confSection"InputClass"Identifier"libinputtouchpadcatchall"MatchIsTouchpad"on"Mat......
  • 【postman】postman插件newman的安装与使用
    一、newman的安装(newmanan安装相关内容来源摘自:https://blog.csdn.net/a272329874a/article/details/115232486)1、关于newmannewman是postman的命令集合运行器。允许......
  • Markdowm基础语法的使用(typora)
    Mackdown学习一级标题:一个#加空格回车二级标题:两个#加空格回车以此类推...一级标题(Ctrl+1)二级标题(Ctrl+2)三级标题(Ctrl+3)四级标题(Ctrl+4)五级标题(Ctrl+5)......
  • 字符串转行 help_topic GROUP_CONCAT
    GROUP_CONCATmysql.help_topicselectGROUP_CONCAT(id)asidsfromtest#4488,4489,4490,4491,4492,4493,4494SET@ids='4488,4489,4490,4491,4492,4493,4494';......