ORACLE 樹形查詢(connect by...start with...)的應用(三)
該篇文章承接上篇:ORACLE 樹形查詢(connect by...start with...)的應用(二)
做進一步的介紹:如下文:
[@more@]層次計算
這裡層次計算是指根據父子節點關係進行彙總,也就是說 父節點 = SUM(子節點)。
但是在財務報表父指標,不一定是子指標的疊加,也可能是幾個子指標減去另外幾個子指標。
例如:
長期資產 = 中長期貸款 – 貸款呆賬準備 +固定資產淨值 +其他長期資產。
為了實現這種情況,我們建一個欄位BS_Dir來表示加減方向 1表示 加,-1表示減
這樣 父節點 = SUM(子節點 * Direction)
SELECT
SUBSTR (PATH, 0, INSTR (PATH, '|', -1, 1) - 1) Par_path ,
sum(bs_value * bs_dir)
FROM (SELECT BS_ID,BS_PID, LTRIM (SYS_CONNECT_BY_PATH (bs_name, '|'), '|') PATH,
bs_value,bs_dir
FROM balance_sheet
CONNECT BY PRIOR bs_id = bs_pid
START WITH bs_pid = 0)
group by SUBSTR (PATH, 0, INSTR (PATH, '|', -1, 1) - 1)
長期負債 | 0.07 |
長期資產 | 3287.75 |
流動負債 | 7453.74 |
流動資產 | 4356.45 |
所有者權益 | 165.15 |
| 30478.88 |
竟然有意外的收穫,原表中的資料流動資產是錯的!!!也許是我對業務知識瞭解不夠。如果您知道原因,還清指點。
資料的最後一行是對所有原表第一層節點的疊加,如果希望得到資產和負債的總計資料,需要對節點順序進行重新調整,我的想法是建立一個表示彙總關係的邏輯的BS_LID 和
BS_LParID 。
還有一種是反映成資料集的形式:被資料集控制元件呼叫,不過本人沒測試過;
oracle樹形查詢
create table test(
bm number(8),
bmmc varchar2(20),
sjbm number(8)
);
insert into test values(1,'aaa',0);
insert into test values(11,'aaa1',1);
insert into test values(12,'aaa2',1);
insert into test values(111,'aaa11',11);
insert into test values(112,'aaa12',11);
insert into test values(113,'aaa13',11);
insert into test values(121,'aaa21',12);
insert into test values(122,'aaa22',12);
insert into test values(123,'aaa23',12);
--
select bm,bmmc,sjbm,level
from test
start with sjbm=0
connect by prior bm = sjbm;或者
select bm,bmmc,sjbm,level
from test
start with sjbm=0
connect by sjbm = prior bm;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8109090/viewspace-880852/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE 樹形查詢(connect by...start with...)的應用(一)Oracle
- [轉載]使用Oracle樹形查詢應注意 - Start with / Connect byOracle
- oracle樹形查詢Oracle
- oracle樹形選單查詢Oracle
- 樹形查詢
- Oracle 樹形結構查詢的特殊用法Oracle
- Connect by實現樹查詢的妙用
- 10g樹形查詢新特性CONNECT_BY_ISCYCLE的9i實現方式(三)
- connect by 樹形查詢在評估cardinality時存在著問題
- Oracle 樹查詢 效能最佳化紀實(start with, connect by)Oracle
- 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
- 樹形結構的選單表設計與查詢
- 使用 Redis 解決“樹”形資料的複雜查詢Redis
- hdu1251 字典樹的應用(查詢公共字首)
- oracle中connect by prior實現遞迴查詢Oracle遞迴
- Oracle複雜查詢(三)Oracle
- Oracle隱形引數查詢指令碼Oracle指令碼
- [20150907]樹形查詢.txt
- 【PL/SQL】Oracle--樹的使用(Connect By)SQLOracle
- 利用樹形查詢實現部分分析函式功能函式
- B樹(多路查詢樹)
- Oracle層次查詢中connect_by_iscycle偽列的取值研究Oracle
- oracle中的遞迴sql查詢 connect by prior實現遞迴Oracle遞迴SQL
- 多路查詢樹
- 平衡查詢樹
- 查詢EBS應用版本
- MySql樹形結構(多級選單)查詢設計方案MySql