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) 從最經典的一個例子來說: 這是原始表結構: 現在需要增加一列,用來統計每天不同城市的完成率排名。 這意味著
榮工又解決問題了:用ORACLE的sys_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():
Oracle的sys_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%以上,在實驗之前我們需要先了解一些基本的概念,本篇文章可能會有些枯燥,因為大多都是理論知識。 本文重點 啟用函式 代價函式 擬合 什麼是啟用函式
Oracle之sql語言的分類及基礎函式
SQL語言的分類 SQL語言共分為四大類:資料查詢語言DQL,資料操縱語言DML,資料定義語言DDL,資料控制語言DCL。 1. 資料查詢語言DQL 資料查詢語言DQL基本結構是由SELECT子句,FROM子句,WHERE 子句組成的查詢塊: SELECT
程式碼整潔之道讀書筆記--函式
好函式的需要滿足: 1. 短小: 經過漫長的試錯,經驗告訴我,函式就該小。 一個強制性的原則是,程式碼長度最好20行封頂。 2.程式碼塊和縮排: if、else、while語句等,其中的語句只有一個,就是一個函式呼叫語句;