ORACLE列值合併

ORACLE列值合併

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

合併列值最通用的方法就是寫一個自定義函數去實現,這裏介紹的是其它方法。

在SQL Server中合併列值能够使用For Xml Path,在Oracle中則能够使用wm_concat 或 ListAgg。

準備數據:

CREATE TABLE MyTest(xType NUMBER,City nvarchar2(200));
/

INSERT INTO MyTest(xType,City)
SELECT 1,N'北京' FROM dual UNION ALL
SELECT 1,N'上海' FROM dual UNION ALL
SELECT 1,N'广州' FROM dual UNION ALL
SELECT 2,N'武汉' FROM dual UNION ALL
SELECT 2,N'杭州' FROM dual UNION ALL
SELECT 2,N'厦门' FROM dual
COMMIT;
/

使用wm_Concat:

SELECT xType,wmsys.wm_concat(to_char(City)) AS xCity
FROM MyTest
GROUP BY xType

使用ListAgg:

SELECT xType,
       ListAgg(to_char(City),',') WITHIN GROUP(ORDER BY xType) AS xCity
FROM MyTest
GROUP BY xType

結果:

XTYPE          XCITY
———-   ————————————–
         1        北京,广州,上海
         2         杭州,武汉,厦门

備註:

0、上面在City列前都加了To_Char()函數,是為了防止出現亂碼的情況;

1、wm_concat 在ORACEL的官方文檔中沒有,不能保證各版本号的兼容性;

2、ListAgg是11g版本号才出現的新的聚集函數。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118419.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • tasker短信转发指定号码_短信转邮箱助手

    tasker短信转发指定号码_短信转邮箱助手起因更换手机号及手机后,原手机及手机号成为备用机。因为各种原因,无法弃用以及不能把原手机卡插到新手机里,故想转发备用机的短信及来电至新手机上工具taskerphp邮箱操作takser设置以短信为例,在tasker上新建一个配置文件,手都短信,任意并添加任务,名称随意,以方便自己识别为准。新建一个HTTPPOST操作,内容参考必要说明:mode=sms表示内容为短信,方便和电话等其它操作共用api…

    2022年8月31日
    1
  • verilog序列生成器最少移位寄存器实现[通俗易懂]

    verilog序列生成器最少移位寄存器实现[通俗易懂]verilog序列生成器最少移位寄存器实现序列生成器序列生成器实现方式移位寄存器版(输入序列版)最少移位寄存器版VCS仿真![仿真](https://img-blog.csdnimg.cn/42e1e4f55f4443faa70b38adad7c5db1.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASmFydmlz56CB5ZGY,size_20,color_FFFFFF,t_7

    2022年7月16日
    16
  • 史上最详细的kali安装教程[通俗易懂]

    史上最详细的kali安装教程[通俗易懂]一、下载系统镜像文件首先下载系统镜像,进入kali官网,在Downloads中选择DownloadKaliLinux,如下图所示。2.根据电脑配置选择合适的版本,在这里我选择的是64位版本,点击HTTP下载镜像文件,或者torrent下载可使用迅雷。kali版本介绍:第一类是常规的32和64位版本;第二类简化版如:kalilinuxlight;第三类桌面环境如:mate、k…

    2022年6月11日
    80
  • Java反射学习总结二(用反射调用对象的私有属性和方法)

    Java反射学习总结二(用反射调用对象的私有属性和方法)

    2022年2月24日
    47
  • bridge桥接模式_Bridge模式

    bridge桥接模式_Bridge模式bridge模式动机案例要点总结笔记动机由于某些类型的固有的实现逻辑,使得他们具有两个变化维度,乃至多个维度的变换如何应对这种”多维度的变化“?如何利用面向对象技术来是使得类型可以轻松地沿着两个乃至多个方向变换而不引入额外地复杂度?案例PC端和Mobile端平台和业务分离朴素class Messager{ public: virtual void Login(string username,string password) = 0; virtual void SendM

    2022年8月11日
    6
  • Centos 7 图形化界面安装

    Centos 7 图形化界面安装1.centos安装完成centos72.测试网络是否能进行链接重启网络。[root@localhost~]#servicenetworkrestart出现以下页面,则网络重启成功。测试链接。[root@localhost~]#pingwww.baidu.com出现以下页面则可以链接网络,ctrl+c退出,进入步骤4。如果链接失败进入步骤3。3.进行网络配置首先进入以下文件夹[root@localhost~]#cd/etc/sysconfig/netwo

    2022年5月30日
    63

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号