1. 程式人生 > >Oracle之 SYS_CONNECT_BY_PATH 函式筆記

Oracle之 SYS_CONNECT_BY_PATH 函式筆記

1、函式簡介:

首先SYS_CONNECT_BY_PATH這個函式是oracle9i新提出的!

然後這個函式要和:START WITH(非必須) 和 CONNECT BY  PRIOR(必須)聯合使用;

  START WITH 開始遍歷的的節點

  CONNECT BY PRIOR 父子關係的對應

LEVEL 是樹的深度

函式有倆個引數(形成樹的欄位名,層級分隔符)

2、示例程式碼:

SELECT T.IDS,T.P_ID,SYS_CONNECT_BY_PATH(T.REF_ID,'->') AS "PATH",LEVEL
FROM ORGPOST_TREE T
START WITH T.P_ID='0'
CONNECT BY PRIOR T.IDS=T.P_ID

3、注意事項:

帶WHERE條件的查詢語句

錯誤寫法:

SELECT T.IDS,T.P_ID,SYS_CONNECT_BY_PATH(T.REF_ID,'->') AS "PATH"
FROM ORGPOST_TREE T
WHERE T.ORG_ID='012010007' AND T.WFC_VERSION='1' --或導致sql執行異常
START WITH T.P_ID='0'
CONNECT BY PRIOR T.IDS=T.P_ID

正確寫法:作為子查詢(本人沒有驗證效率問題)

SELECT T.IDS,T.P_ID,SYS_CONNECT_BY_PATH(T.REF_ID,'->') AS "PATH",LEVEL
FROM (SELECT * FROM ORGPOST_TREE WHERE ORG_ID='012010007' AND WFC_VERSION='1') T
START WITH T.P_ID='0'
CONNECT BY PRIOR T.IDS=T.P_ID

4、查詢結果:

ab08c0ed37bf40fdb5fe84dab3df8b1c	0	                                ->DG001                    1
64857309603e44bbb9e8e9345a5ce91e	ab08c0ed37bf40fdb5fe84dab3df8b1c	->DG001->CXY0002           2
93973cb3a3fb4a568ffe8d0fe9353a5f	64857309603e44bbb9e8e9345a5ce91e	->DG001->CXY0002->CXY004   3


 根據這個結果可以實現很多有意思的查詢

相關推薦

Oracle SYS_CONNECT_BY_PATH 函式筆記

1、函式簡介: 首先SYS_CONNECT_BY_PATH這個函式是oracle9i新提出的! 然後這個函式要和:START WITH(非必須) 和 CONNECT BY  PRIOR(必須)聯合使用;   START WITH 開始遍歷的的節點   CONNECT BY

oracle 分析函式 over (partition by ...order by ...)

一:分析函式overOracle從8.1.6開始提供分析函式,分析函式用於計算基於組的某種聚合值,它和聚合函式的不同之處是對於每個組返回多行,而聚合函式對於每個組只返回一行。 1、分析函式和聚合函式的不同之處: 分析函式和聚合函式很多是同名的,意思也一樣,只是聚合函式用group by分組,每個分組返回一

Oracle 常用函式

substr: 格式1: substr(string string, int a, int b);   格式2:substr(string string, int a) ; 解釋:     格式1:      

Oracle 建立函式

--建立函式語法 create [or replace] function [schema.]function_name (函式引數列表) --引數有IN、OUT、IN OUT三種類型;IN代表需要輸入的引數,OUT代表要返回的引數,IN OUT代表即是輸入引數也是返回引數。 return date

Xilinx SDK 初學–API函式筆記(GPIO函式)

Xilinx SDK 初學之–API函式筆記(GPIO函式)   xgpio函式 1、int XGpio_Initialize(XGpio * InstancePtr, u16 DeviceId) 名稱 程式碼 解釋

Oracle 單行函式

單行函式 •操作資料物件 •接受引數返回一個結果 •只對一行進行變換 •每行返回一個結果 •可以轉換資料型別 •可以巢狀 •引數可以是一列或一個值 1.字元控制函式 這類函式改變字元的

Oracle分析函式、開窗函式

一、rank() over(partition by 欄位1 order by 欄位2) 從最經典的一個例子來說: 這是原始表結構: 現在需要增加一列,用來統計每天不同城市的完成率排名。 這意味著

榮工又解決問題了:用ORACLEsys_connect_by_path函式,獲得遞迴查詢路徑上各個節點的運算值

語句示例如下 Select JgId,JgType,OrgCode,Orgname,DepCode,DepName,ClsCode,ClsName,EtpCode,EtpName        sys_connect_by_path(PlanRate,'*') from

Java常用函式筆記

    Java中有很多常用的小函式,跟python中很多內建的函式是一樣的性質,如:sorted()、strip()、replace()等等,今天簡單的總結了一下我使用最多的幾個字串、數字、日期相關的函式,如下: 字元處理的函式 lower():轉成小寫 upper():

Oraclesys_connect_by_path函式

sys_connect_by_path函式 用於多列轉行 語法格式 select … sys_connect_by_path(column_name,’connect_symbol’) from

c++筆記CArray函式

謹以此文獻給因為我菜雞同時裝了VS2013和2017導致vs各種衝突,以至於只能重灌系統的新電腦!哭泣.... CArray屬於MFC,是一個數組模板類。MFC的陣列類支援的陣列類似於常規陣列,可以存放任何資料型別。常規陣列在使用前必須將其定義成能夠容納所有可能需要的元素,即先確定大小,而M

c++學習筆記成員函式

學了c++才知道什麼是面向物件什麼是面向過程。幼稚的我曾經還覺得c++和C語言差不多,接觸之後才知道c++是多麼的難,光類和物件這個知識點就看了一天。什麼建構函式解構函式,物件陣列物件成員弄得我頭大,現在才知道為什麼老師說c++是最難的語言,學c++就是在地獄裡磨鍊,從地獄出來就是天堂,會有會當凌絕

程式碼整潔道 讀書筆記 - 第3章 函式

短小 函式的第一規則是要短小。第二條規則是還要更短小。 函式20行封頂最佳。 if語句、else語句、while語句等,其中的程式碼塊應該只有一行,而且,塊內呼叫的函式擁有較具說明性的名稱,還能起到文件的作用。 只做一件事 函式應該做一件事。做好這件事。只做這一件事。 每個函式一個抽象層級 自頂

oracle菜鳥學習 分析函式-排序

oracle菜鳥學習之 分析函式-排序 排序函式 1.row_number:返回連續的排序,無論值是否相等2.rank:具有相等值得行排序相同,序數值隨後跳躍3.dense_rank:具有相等值得行排序相同,序號是連續得 實驗表 create table chengji(sno number,km v

Oracle基礎分析函式:佔比計算

下面給大家介紹一個oracle自帶的分析函式ratio_to_report(佔比函式),這個函式作用:簡單來說就是算百分比的。 比如學生成績表中,包含科目和成績,要計算不同科目分數佔比,已經所有科目的分數佔比 進入正題,直接上程式碼,如下: ---刪除表 drop table test001; -

Oracle 資料庫入門----------------------單行函式

  1,單行函式   SQL> --字元函式 SQL> select lower('Hello World') 轉小寫,upper('Hello World') 轉大寫,initcap('

JavaScript 學習筆記 原生函式

原生函式是什麼 JavaScript的原生函式也叫內建函式 例如 String(),Number(),Boolean()等 原生函式可以被當做建構函式來使用 但通過建構函式(如new String("abc"))創建出來的是封裝了基本型別值("abc")的封裝物件

TensorFlow筆記(4)——優化手寫數字識別模型代價函式和擬合

前言 上篇筆記我們利用MNIST資料集訓練了一個手寫數字識別的模型,但是準確率非常的低,維持在91%左右,我們可以嘗試著將準確率提高到96%以上,在實驗之前我們需要先了解一些基本的概念,本篇文章可能會有些枯燥,因為大多都是理論知識。 本文重點 啟用函式 代價函式 擬合 什麼是啟用函式

Oraclesql語言的分類及基礎函式

SQL語言的分類 SQL語言共分為四大類:資料查詢語言DQL,資料操縱語言DML,資料定義語言DDL,資料控制語言DCL。 1. 資料查詢語言DQL 資料查詢語言DQL基本結構是由SELECT子句,FROM子句,WHERE 子句組成的查詢塊: SELECT

程式碼整潔道讀書筆記--函式

好函式的需要滿足: 1. 短小: 經過漫長的試錯,經驗告訴我,函式就該小。 一個強制性的原則是,程式碼長度最好20行封頂。 2.程式碼塊和縮排: if、else、while語句等,其中的語句只有一個,就是一個函式呼叫語句;