我有3個表:CONNECT BY對於具有兩個兩個表JOINS
- 兩次與分層結構
(如遞歸類型的層次結構的 「尺寸」); - 一個帶有求和數據(如X列的「事實」)。
他們在這裏:
- DIM1(ID1,PARENT2,NAME1)
- DIM2(ID2,PARENT2,NAME2)
- FACTS(ID1,ID2,X)
DIM1表的示例:
-- 1 0 DIM1
---- 2 1 DIM1-A
------ 3 2 DIM1-A-A
-------- 4 3 DIM1-A-A-A
-------- 5 3 DIM1-A-A-B
------ 6 2 DIM1-A-B
-------- 7 6 DIM1-A-B-A
-------- 8 6 DIM1-A-B-B
------ 9 2 DIM1-A-C
---- 10 1 DIM1-B
------ 11 10 DIM1-B-C
------ 12 10 DIM1-B-D
---- 13 1 DIM1-C
DIM2表210
示例:FACTS表的
-- 1 0 DIM2
---- 2 1 DIM2-A
------ 3 2 DIM2-A-A
-------- 4 3 DIM2-A-A-A
-------- 5 3 DIM2-A-A-B
-------- 6 3 DIM2-A-B-C
------ 7 2 DIM2-A-B
---- 8 1 DIM2-B
---- 9 1 DIM2-C
實施例:
1 1 100
1 2 30
1 3 500
-- ................
13 9 200
我想創建唯一SELECT
其中I將指定父爲DIM1(例如ID1=2
用於DIM1-A)和DIM2的父代(例如ID2=2
代表DIM2-A)和SELECT
將生成如下報告:
Name_of_1 Name_of_2 Sum_of_X
--------- --------- ----------
DIM1-A-A DIM2-A-A (some sum)
DIM1-A-A DIM2-A-B (some sum)
DIM1-A-B DIM2-A-A (some sum)
DIM1-A-B DIM2-A-B (some sum)
DIM1-A-C DIM2-A-A (some sum)
DIM1-A-C DIM2-A-B (some sum)
我想用CONNECT BY
詞組,短語START WITH
,SUM
詞組,短語GROUP BY
和OUTER
或INNER
(?)JOIN
。我不需要Oracle 10.2的其他擴展。換句話說:只有「經典」SQL和
只有Oracle擴展才能用於層次結構查詢。
可能嗎?
我嘗試了一些實驗用的問題在
Mixing together Connect by, inner join and sum with Oracle
(這裏是一個非常很好的解決方案但僅限於一個
維度表(「任務」),但我需要JOIN
維表到一個事實表),但我沒有成功。