ORACLE 樹形查詢(connect by...start with...)的應用(一)

itpub120發表於2006-11-30

關於oracle的樹形查詢(connect by...start with...)

轉錄1

org是部門表,其中orgid是當前部門id,porgid是上級目錄id,像這種有父子關係的表中做從某一部門向上或向下的查詢用到了oracleconnect by語句:

select * from org connect by prior orgid=porgid start with orgid=1
//
從部門id1的部門尋找所有子部門
select * from org connect by prior porgid=orgid start with orgid=1
//
從部門id1的部門尋找所有父部門

轉錄2

Oracle 中使用層次查詢方便處理財務報表

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章