zoukankan      html  css  js  c++  java
  • oracle根据a列中相同的值,获取将对应的B列中各个值合并的结果集

    从A查询结果得到B查询结果:

    A

    --源表 table_t

      a                b
     
    广东         广州
     
    广东         深圳
     
    广西         南宁
     
    广西         北海
     
    B
    --结果表
     
      a                     b
     
    广东          广州,深圳
     
    广西          南宁,北海
     
    使用SQL
    select a,WMSYS.WMCONCAT(b) b
        from table_t
        group by a;

    合并后的结果B列的数据类型是clob,可以使用to_char()转换。

    SQL如下

    select a,to_char(WMSYS.WM_CONCAT(b)) b
     
    from table_t 
     
    group by a

     还有一种方法:

    SQL> SELECT LISTAGG(B,',') WITHIN GROUP(ORDER BY B DESC) B,A FROM TABLE_T GROUP BY A;
    
    B                                                                                A
    -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
    深圳,广州                                                                        广东
    南宁,北海                                                                        广西

    使用LISTAGG函数,其语法是

      LISTAGG(expr,['delimiter']) WITHIN GROUP(ORDER_BY_CLAUSE)

  • 相关阅读:
    替换空格
    centos虚拟机 服务器搭建
    Java 深度遍历和广度优先遍历
    idea热部署Devtools
    idea字符编码设置
    idea破解详细教程
    Java序列化
    60+Git常用命令行
    LeetCode 236. 二叉树的最近公共祖先
    08 讲解v-cloak,v-text,v-html的基本使用
  • 原文地址:https://www.cnblogs.com/MasterE/p/6904005.html
Copyright © 2011-2022 走看看