加油,新時代打工人!
以下在學習Oracle資料的記錄程序,以及遇到的問題,
一、 【詳細】 Oracle Database 19c 安裝步驟
二、 Oracle基礎入門陳述句
三、【詳細】Oracle單行函式和多行函式
四、【詳細】Oracle中的視圖、索引、PL/SQL語言、游標
五、【詳細】Oracle幫助檔案下載和使用
六、【詳細】Oracle存盤程序和存盤函式以及觸發器的使用
七、【親測】Java呼叫Oracle存盤程序和存盤函式
Oracle listagg函式和start with connect by子句
- listagg
- start with connect by 子句
listagg
listagg(measure_expr,delimiter) within group ( order by order_by_clause);
解釋:measure_expr可以是基于任何列的運算式
delimiter分隔符,默認為NULL
order_by_clause決定了列值的拼接順序
舉例
普通函式,對工資進行排序,并按照逗號進行拼接
SQL> select listagg(ename,',')within group(order by sal)name from emp;
NAME
----------------------------------------------------------------------------------------------------
SMITH,JAMES,ADAMS,MARTIN,WARD,MILLER,TURNER,ALLEN,CLARK,BLAKE,JONES,FORD,SCOTT,KING
分組函式
SQL> select deptno,listagg(ename,',')within group(order by sal)name from emp group by deptno;
DEPTNO NAME
---------- -------------------------------------------------------------------------------------------------
10 MILLER,CLARK,KING
20 SMITH,ADAMS,JONES,FORD,SCOTT
30 JAMES,MARTIN,WARD,TURNER,ALLEN,BLAKE
start with connect by 子句
connect by 是結構化查詢中用到的,其基本語法是:
1 select … from tablename
2 start with 條件1
3 connect by 條件2
4 where 條件3;
舉例
select * from test
20 2 start with day_number=1
21 3 connect by prior day_number=day_number-1 and prior msisdn= msisdn
上面的陳述句查找出了從1開始,并且day_number 逐漸+1 遞增的,并且 msisdn 相同的哪些個資料.
start with connect by 語法結構
如上面說看到的例子,其語法結構為start with condition connect by condition (含 prior 關鍵字)
start with conditon 給出的seed 資料的范圍, connect by 后面給出了遞回查詢的條件,prior 關鍵字表示父資料,prior 條件表示子資料需要滿足父資料的什么條件,在下面的這個start with connect by 結構中,就表示查找出了從1開始,父資料的day_number等于子資料的day_number-1而且父資料的msisdn=子資料的msisdn.
start with day_number=1
connect by prior day_number=day_number-1 and prior msisdn= msisdn
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/398799.html
標籤:其他
