oracle多行合并_rgb_rgb的博客-程序员ITS203_列明行rgb

技术标签: path  oracle  2010  存储  

SELECT ROW_NUMBER ()
                      OVER (PARTITION BY ChgNumber ORDER BY ChgNumber, InsideID)
                      NumId,
                   ChgNumber,
                   InvoiceNumber
              FROM "000".tbChgInvoiceDetail

1	1	 	1111
2	2	 	 
3	3	 	123
4	1	20100919000003	 
5	1	20110914000001	13123213213
6	1	20110914000002	112312312312
7	1	20110921000005	 
8	1	20110921000006	 
9	1	20110921000039	 
10	1	20110921000040	 
11	1	20110921000041	 
12	1	20110921000083	 
13	1	20110921000105	21312313
14	1	20110927000001	555
15	2	20110927000001	666
16	1	20111216000004	1985
17	1	20111219000002	 
18	1	20111219000003	 
19	1	20111219000008	 
20	1	20111220000001	 
21	1	20120221000002	 
22	1	20120229000004	 
23	1	20120229000005	124
24	1	20120229000006	 
25	1	20120229000008	123
26	1	20120331000002	 
27	1	20120411000001	 
28	1	20120411000002	11111
29	2	20120411000002	22222
30	1	20120417000001	 
31	1	20120430000006	 
32	1	20120430000007	 
33	1	20120430000008	 
34	1	20120616000001	1
35	1	20120811000001	 
36	1	20120811000002	 
37	1	20120811000003	 
38	1	20120811000004	 
39	1	20120811000005	 
40	2	20120811000005	 
41	1	20120815000002	123
42	2	20120815000002	124
43	1	20120817000001	 
44	1	20120820000004	 
45	1	20120821000002	 
46	1	20120821000005	 
47	1	20120821000006	 

    SELECT ChgNumber,
           LTRIM (MAX (SYS_CONNECT_BY_PATH (InvoiceNumber, ',')), ',') InvoiceNumber
              
      FROM (SELECT ROW_NUMBER ()
                      OVER (PARTITION BY ChgNumber ORDER BY ChgNumber, InsideID)
                      NumId,
                   ChgNumber,
                   InvoiceNumber
              FROM "000".tbChgInvoiceDetail)
START WITH NumId = 1
CONNECT BY Numid - 1 = PRIOR NumId AND ChgNumber = PRIOR ChgNumber
  GROUP BY ChgNumber

1	 	123, ,1111
2	20100919000003	 
3	20110914000001	13123213213
4	20110914000002	112312312312
5	20110921000005	 
6	20110921000006	 
7	20110921000039	 
8	20110921000040	 
9	20110921000041	 
10	20110921000083	 
11	20110921000105	21312313
12	20110927000001	555,666
13	20111216000004	1985
14	20111219000002	 
15	20111219000003	 
16	20111219000008	 
17	20111220000001	 
18	20120221000002	 
19	20120229000004	 
20	20120229000005	124
21	20120229000006	 
22	20120229000008	123
23	20120331000002	 
24	20120411000001	 
25	20120411000002	11111,22222
26	20120417000001	 
27	20120430000006	 
28	20120430000007	 
29	20120430000008	 
30	20120616000001	1
31	20120811000001	 
32	20120811000002	 
33	20120811000003	 
34	20120811000004	 
35	20120811000005	 , 
36	20120815000002	123,124
37	20120817000001	 
38	20120820000004	 
39	20120821000002	 
40	20120821000005	 
41	20120821000006	 


 

 简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段:
org_id,parent_id那么通过表示每一条记录的parent是谁,就可以形成一个树状结构。
用上述语法的查询可以取得这棵树的所有记录。
其中:
条件1 是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。
条件2 是连接条件,其中用PRIOR表示上一条记录,比如 CONNECT BY PRIOR org_id = parent_id就是说上一条记录的org_id 是本条记录的parent_id,即本记录的父亲是上一条记录。
条件3 是过滤条件,用于对返回的所有记录进行过滤。

 

       自从Since Oracle 9i 开始,就可以通过 SYS_CONNECT_BY_PATH 函数实现将从父节点到当前行内容以“path”或者层次元素列表的形式显示出来。 如下例所示:
在 Oracle 10g 中,还有其他更多关于层次查询的新特性 。例如,有的时候用户更关心的是每个层次分支中等级最低的内容。那么你就可以利用伪列函数CONNECT_BY_ISLEAF来判断当前行是不是叶子。如 果是叶子就会在伪列中显示“1”,如果不是叶子而是一个分支(例如当前内容是其他行的父亲)就显示“0”。下给出了一个关于这个函数使用的例子:
在Oracle 10g 中还有一个新操作——CONNECT_BY_ROOT。 它用在列名之前用于返回当前层的根节点。如下面的例子,我可以显示出层次结构表中当前行数据所对应的最高等级节点的内容。

 

       为了更好的查询一个树状结构的表,在Oracle的PL/SQL中提供乐一个诱人的特性——CONNECT BY子句。它大大的方便了我们查找树状表:遍历一棵树、寻找某个分支……,但还是存在一些不足。在Oracle 10G,就对这个特性做了增强。下面就举例说明一下:CONNECT_BY_ROOT一张表,有多颗子树(根节点为0),现在我想知道每个节点属于哪个子树。举例:铃音目录结构下有多个大分类:中外名曲、流行经典、浪漫舞曲……,每个大类下面又有多个子类,子类下面还可以细分。那现在想要知道每个子类分属哪个大类,或者要统计每个大类下面有多少个子类。看下面的例子,DIRINDEX分别为1、2、3的就是大分类,其他编号的都是子类或孙子类:select dirindex, fatherindex, RPAD(' ', 2*(LEVEL-1)) || dirname from t_tonedirlibstart with fatherindex = 0

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/rgb_rgb/article/details/7907289

智能推荐

【json】json-c接口_arvik的博客-程序员ITS203_json_c

json、json-c、jsoncpp是3套不同的代码,其中的函数接口也大不一样,其中jsoncpp针对c++语言编写的。json-c比json要复杂一些,处理、容错能力稍强一些。json-c的api介绍:json_object.h文件常用的api/*增加obj的引用计数*/struct json_object* json_object_get(struct json_object *obj)

REVERSE-COMPETITION-HGAME2022-Week1_P1umH0的博客-程序员ITS203

REVERSE-COMPETITION-HGAME2022Week1easyasmcreakmeFlag Checker猫头鹰是不是猫Week1easyasm程序一开始将si设置为0,然后si和28比较,如果si小于28则进入循环循环体中,si作为下标,从输入中取值存入al,然后al左移4位,压入栈保持下标si不变,再重新从输入中取一次值存入al,然后al右移4位右移4位后的结果与之前左移4位的结果相加,然后异或0x17,最后与已知比较整个过程相当于将输入中的每一个值的高4位和低4位交换,然

.net中Task.WaitAll和WaitAny同步的等待Task完成_Huey-Chan的博客-程序员ITS203_waitany 计时间隔

前面讲了《.net中async/await异步编程》,如果方法中使用了多个异步方法,该如何同步的等待Task完成?Task.WaitAll 等待提供的所有 System.Threading.Tasks.Task 对象完成执行过程。DownLoadTest dwtest = new DownLoadTest();CancellationTokenSource cts = new Cancellat..._1671465600

oracle grant的用法,oracle grant总结_Shine Xue的博客-程序员ITS203

从oracle的在线帮助文档来看,grant的语法其实蛮复杂的,不过根据二八法则,我们只需要掌握grant的常见用法就够用了。grant概述grant 允许对象的创建者给某用户或某组或所有用户(public)某些特定的权限.对象创建后,除了创建者外,除非创建者赋予(grant)其他用户访问权限,否则其他用户没有访问该对象的权限。一旦用户有某对象的权限,他就可以使用那个特权。不需要给创建者赋予(gr...

POST http://xxx net::ERR_NAME_NOT_RESOLVED 解决_Peter-OK的博客-程序员ITS203_net::err_name_not_resolved

测试环境启动后,项目A前端访问项目B某接口报错 net::ERR_NAME_NOT_RESOLVED,F12,切到Network看到接口状态如下:切换到Console看到状态如下:怀疑是项目A、B服务器网络不通的问题,结果运维同事在项目A服务器上curl 项目B的接口,返回200,说明网络是通的。。。百思不得其解,网上各种查询也没有相关答案,还以为是Docker机器里DNS解析的问题,,,纠结了一下午,忽然想清楚了,在项目A服务器上curl 项目B的接口,返回200,说明项目A...

idea 在使用junit 4.12 报错的问题_梦幻逍遥侠的博客-程序员ITS203

Exception in thread "main" java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:763...

随便推点

Object Detection--YOLOv3训练KITTI数据集_佛系土味农孩��的博客-程序员ITS203_yolov3 kitti

参考:https://blog.csdn.net/qq583083658/article/details/86321987#2

oepnssl 关于visual studio 2019依赖项配置,问题 can‘t open config file: /usr/local/ssl/openssl.cnf_初夏花开的博客-程序员ITS203

oepnssl遇到can't open config file: /usr/local/ssl/openssl.cnf解决:1.set OPENSSL_CONF=openssl.cnf2.set OPENSSL_CONF=..目录..\OpenSSL\OpenSSL-Win64\bin\openssl.cfg目录包含openssl.cfg文件下面是成功标志

微服务化之服务拆分与服务发现_粥粥同学的博客-程序员ITS203

文章来自网易云计算首席架构师刘超的个人微信公众号,刘超的通俗云计算微服务化之服务拆分与服务发现一、服务拆分的前提二 服务拆分的时机微服务拆分时机一:提交代码频繁出现大量冲突微服务解决的问题之二,就是高并发。微服务拆分时机三:横向扩展流程复杂,主要业务和次要业务耦合微服务拆分时机四:熔断降级全靠if-else三、服务拆分的方法四、服务拆分的规范服务拆分的规范一:服务拆分最多三层,两次调用服务拆分的...

ffmpeg 移植到 android---阿冬_阿冬专栏的博客-程序员ITS203

ffmpeg 移植到 android来自大牛:http://blog.csdn.net/voipmaker/article/details/6932696一:生成动态库(.so文件)-->环境:操作系统:Ubuntu9.10ffmpeg源码版本:ffmpeg-0.6.1(可以在http://ffmpeg.org/dow

C++ - 将长整型数转换为字符串_做人,最重要的就是开心嘛的博客-程序员ITS203_c++ 长整型转字符串

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net/* * Created by Chimomo */#include <iostream>using namespace std;char *convertLongToStr(long L) { int i =...

ViewPager自定义轮播图并解决播放冲突__万能的博哥的博客-程序员ITS203

首先介绍一下这篇小代码:注释全面,简单易学,适用初学者,图片自拟!!!一定要将ArrayList集合&Handler机制传到适配器,否则无法完成展示,也解决不了滑动冲突,代码有点多,但是它通俗易懂啊layout布局内写法:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android...

推荐文章

热门文章

相关标签