- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章oracle sys_connect_by_path 函数 结果集连接由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
以前看过有人转换过的,当时仅仅惊叹了一下,就过去了,没有记下来,直至于用到的时候呢,开始到处找,找来找去都没有找不到痕迹了,心里也就郁郁寡欢呀。 今天无意间,看connect by的使用,看到了sys_connect_by_path的用法,算是给我一个另类的惊喜了,sys_connect_by_path(columnname, seperator) 也可以拼出串来,不过这个函数本身不是用来给我们做这个结果集连接用的,而是用来构造树路径的,所以需要和connect by一起来用。 呵呵呵,在这里嚣张了一把,基于对oracle的一些函数的了解的基础上,看我是怎样硬生生的把一个没有树结构的普通表或者结果集做出我们想要的东西来。 magic is start. 道具,一个普通表,就一个字段 name, 姑且叫表名为test_sysconnectbypath吧,表名太长,嘻嘻,不怕,别名之。 以下为该表数据 NAME ------------------ 深圳 武汉 上海 北京 天津 新加坡 别名之 SQL>with temp as (select name form test_sysconnectbypath); 这是别名的写法,我们下面的sql语句就可以用temp来代替这个结果集。当然这个()里面可以是你自己的复杂查询出来的结果集也行 第一变性开始,把这个变成有树形结构的 怎么才能变形成树结构了,大家马上想到,加一个pid,和id才行哟,这里没有,我们就给他们加上吧。不过,加了id,怎么来填他们的结构数据呢,这里需要另一个函数显圣了 lag() , lag() 是取前记录, 和lead相对, 如果是简单的拼的话,树结构不就是,上一条记录就是下一条记录的父节点了么 这样我们用rownum,不就.... OK了 action select t.name, no, lag(no) over(order by no) pid from (select temp.*, rownum no from temp) t; 结果出来了 NAME NO PID -------------------- ---------- ---------- 深圳 1 武汉 2 1 上海 3 2 北京 4 3 天津 5 4 新加坡 6 5 现在就是个树形了吧。 再变树 action select * from (select t.name, no, lag(no) over(order by no) pid from (select temp.*, rownum no from temp)) t start with pid is null connect by prior no=pid; 看看结果吧 结果出来了 NAME NO PID -------------------- ---------- ---------- 深圳 1 武汉 2 1 上海 3 2 北京 4 3 天津 5 4 新加坡 6 5 奇怪结果没有变哟,是的,这里只是把树给选出来了,你如果加个lpad(' ', 4*level, '*')||name就可以看出端倪了 最后一变,拼成串 select sys_connect_by_path(name. ',') text from (select t.name, no, lag(no) over(order by no) pid from (select temp.*, rownum no from temp)) t start with pid is null connect by prior no=pid; 你们自己看结果吧。 Text -------------------------------------------------- 深圳,武汉,上海,北京,天津,新加坡 ...... 呵呵呵,虽然是做出来来,但是就像上面说讲的,这里只是另类的喜悦,因为这个不是我以前看到的那个解决方案,不过是通过这个方法,有用到了强大的connect by已经分析函数over,仅是窃喜, 找寻工作还要继续,什么时候才很然给我拨开云雾找到你哟.
最后此篇关于oracle sys_connect_by_path 函数 结果集连接的文章就讲到这里了,如果你想了解更多关于oracle sys_connect_by_path 函数 结果集连接的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
以前看过有人转换过的,当时仅仅惊叹了一下,就过去了,没有记下来,直至于用到的时候呢,开始到处找,找来找去都没有找不到痕迹了,心里也就郁郁寡欢呀。 今天无意间,看connect by的使用
我有一个 ORA-01489: 字符串连接的结果太长 在 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Produ
我想从 Java 对 Oracle 9i 数据库运行如下查询(下面是示例表结构和示例数据)。 SELECT deptno, SUBSTR(comma_list, 2) comma_li
我正在尝试将涉及 Oracle SYS_CONNECT_BY_PATH 语法的复杂查询转换为 SQL Server: SELECT DISTINCT TO_CHAR(CO
我已经在 Oracle 版本上对此进行了测试: 11.2.0.3.0 12.1.0.2.0 以下查询引发 ORA-30004 错误,但我的分隔符 ' -> ' 未在任何列值中使用: with temp
我有一个查询是一个用 Oracle 编写的更大查询的一部分,我需要将其转换为 PostgreSQL。 /*rn and cnt are defined earlier*/ SELECT wtn, LT
我是一名优秀的程序员,十分优秀!