ORACLE 樹形查詢(connect by...start with...)的應用(一)
關於oracle的樹形查詢(connect by...start with...)
轉錄1:
org是部門表,其中orgid是當前部門id,porgid是上級目錄id,像這種有父子關係的表中做從某一部門向上或向下的查詢用到了oracle的connect by語句:
select * from org connect by prior orgid=porgid start with orgid=1
//從部門id為1的部門尋找所有子部門
select * from org connect by prior porgid=orgid start with orgid=1
//從部門id為1的部門尋找所有父部門
轉錄2:
Oracle 中使用層次查詢方便處理財務報表
摘要:本文介紹瞭如何使用Oracle 中的Connect by 子句,並結合一個例項,完成了對一張資產負債表的計算。
Oracle 中Connect By 子句對在關係表上表現層次關係提供了方便。
使用Connect by 子句需要在表中定義兩個欄位,一個是父節點欄位,一個是節點欄位。其中節點欄位一般來說是主鍵。
[@more@]例如我們作一張資產負債表
資料來源:
資 產 | 期末餘額 | 負債及所有者權益 | 期末餘額 |
流動資產 | 4256.45 | 流動負債 | 7453.74 |
現金 | 2.00 | 短期存款 | 305.54 |
存放中央銀行款項 | 160.77 | 財政性存款 | 411.80 |
存放同業款項 | 18.34 | 向中央銀行借款 | 6485.05 |
短期貸款 | 4103.41 | 同業存放款項 | 2.15 |
其他流動資產 | 71.93 | 其他流動負債 | 249.20 |
長期資產 | 3287.75 | 長期負債 | 0.07 |
中長期貸款 | 3262.89 | 發行長期債券 |
|
減:貸款呆賬準備 | 73.71 | 其他長期負債 | 0.07 |
固定資產淨值 | 77.58 |
|
|
其他長期資產 | 20.99 |
|
|
無形、遞延及其它資產 | 0.52 | 所有者權益 | 190.91 |
|
| 其中:實收資本 | 165.15 |
資產總計 | 7644.72 | 負債及所有者權益合計 | 7644.72 |
Create table balance_sheet (BS_ID INTEGER ,BS_PID INTEGER ,BS_NAME VARCHAR2(100) ,BS_VALUE NUMBER(10) );
BS_ID 專案程式碼 BS_PID 專案父程式碼 BS_Name 專案名稱 BS_VALUE 資料列
插入測試資料
insert into balance_sheet values(1,0,'流動資產',4256.45);
insert into balance_sheet values(2,1,'現金',2.00);
insert into balance_sheet values(3,1,'存放中央銀行款項',160.77);
insert into balance_sheet values(4,1,'存放同業款項',18.34);
insert into balance_sheet values(5,1,'短期貸款', 4103.41);
insert into balance_sheet values(6,1,'其他流動資產',71.93);
insert into balance_sheet values(7,0,'長期資產',3287.75);
insert into balance_sheet values(8,7,'中長期貸款', 3262.89);
insert into balance_sheet values(9,7,'減:貸款呆賬準備',73.71);
insert into balance_sheet values(10,7,'固定資產淨值',77.58);
insert into balance_sheet values(11,7,'其他長期資產',20.99);
insert into balance_sheet values(12,0,'無形、遞延及其它資產',0.52);
insert into balance_sheet values(13,0,'資產總計',7644.72);
insert into balance_sheet values(14,0,'流動負債',7453.74);
insert into balance_sheet values(15,14,'短期存款',305.54);
insert into balance_sheet values(16,14,'財政性存款',411.80);
insert into balance_sheet values(17,14,'向中央銀行借款',6485.05);
insert into balance_sheet values(18,14,'同業存放款項',2.15);
insert into balance_sheet values(19,14,'其他流動負債',249.20);
insert into balance_sheet values(20,0,'長期負債',0.07);
insert into balance_sheet values(21,20,'發行長期債券',null);
insert into balance_sheet values(22,20,'其他長期負債', 0.07);
insert into balance_sheet values(23,0,'所有者權益',190.91);
insert into balance_sheet values(24,23,'其中:實收資本',165.15);
insert into balance_sheet values(25,0,'負債及所有者權益合計',7644.72);
commit;
顯示全部資料:
select bs_name,bs_value from balance_sheet
connect by prior bs_id = bs_pid
start with bs_pid = 0
流動資產 | 4256.45 |
現金 | 2 |
存放中央銀行款項 | 160.77 |
存放同業款項 | 18.34 |
短期貸款 | 4103.41 |
其他流動資產 | 71.93 |
長期資產 | 3287.75 |
中長期貸款 | 3262.89 |
減:貸款呆賬準備 | 73.71 |
固定資產淨值 | 77.58 |
其他長期資產 | 20.99 |
無形、遞延及其它資產 | 0.52 |
資產總計 | 7644.72 |
流動負債 | 7453.74 |
短期存款 | 305.54 |
財政性存款 | 411.8 |
向中央銀行借款 | 6485.05 |
同業存放款項 | 2.15 |
其他流動負債 | 249.2 |
長期負債 | 0.07 |
發行長期債券 | |
其他長期負債 | 0.07 |
所有者權益 | 190.91 |
其中:實收資本 | 165.15 |
負債及所有者權益合計 | 7644.72 |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8109090/viewspace-880850/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE 樹形查詢(connect by...start with...)的應用(三)Oracle
- [轉載]使用Oracle樹形查詢應注意 - Start with / Connect byOracle
- oracle樹形查詢Oracle
- oracle樹形選單查詢Oracle
- 樹形查詢
- Oracle 樹形結構查詢的特殊用法Oracle
- Connect by實現樹查詢的妙用
- connect by 樹形查詢在評估cardinality時存在著問題
- Oracle 樹查詢 效能最佳化紀實(start with, connect by)Oracle
- 10g樹形查詢新特性CONNECT_BY_ISCYCLE的9i實現方式(一)
- oracle 樹查詢Oracle
- 10g樹形查詢新特性CONNECT_BY_ROOT的9i實現方式
- 10g樹形查詢新特性CONNECT_BY_ISLEAF的9i實現方式
- LightDB 22.4 新特性之相容Oracle樹形查詢Oracle
- 樹形結構的儲存與查詢
- 10g樹形查詢新特性CONNECT_BY_ISCYCLE的9i實現方式(四)
- 10g樹形查詢新特性CONNECT_BY_ISCYCLE的9i實現方式(三)
- 10g樹形查詢新特性CONNECT_BY_ISCYCLE的9i實現方式(二)
- 遞迴樹形查詢所有分類遞迴
- 查詢oracle中的隱形引數Oracle
- 樹形查詢也瘋狂&優化措施優化
- 聊聊mysql的樹形結構儲存及查詢MySql
- 一個connect by查詢語句的優化優化
- oracle 10.2.0.4執行一個樹查詢的問題Oracle
- 樹形結構的選單表設計與查詢
- 使用 Redis 解決“樹”形資料的複雜查詢Redis
- 一個簡單的樹查詢
- hdu1251 字典樹的應用(查詢公共字首)
- oracle中connect by prior實現遞迴查詢Oracle遞迴
- Oracle隱形引數查詢指令碼Oracle指令碼
- [20150907]樹形查詢.txt
- 【PL/SQL】Oracle--樹的使用(Connect By)SQLOracle
- 利用樹形查詢實現部分分析函式功能函式
- B樹(多路查詢樹)
- Oracle層次查詢中connect_by_iscycle偽列的取值研究Oracle
- oracle中的遞迴sql查詢 connect by prior實現遞迴Oracle遞迴SQL
- 多路查詢樹
- 平衡查詢樹