Oracle
oracle如何從兩個表中獲取分層數據?
我有兩個表 table1 和 table2,我需要通過連接兩個表來進行分層輸出。
表 1 包含三個類別 CAT1、CAT2 和 CAT3,具有一個外鍵,即 F_ID,它是另一個表 table2 的主鍵,其中包含一個列 ieVAL。
TABLE 1 ----------------- CAT1 CAT2 CAT3 F_ID A a aa 1 A a ab 2 A b ba 3 A b bb 4 B c ca 5 B c cb 6 B d da 7 TABLE 2 ------------------- F_ID VAL 1 4 2 6 3 4 4 1 5 6 6 6 7 9
現在我需要以下格式的數據,其中每個類別和子類別都包含 VAL 的總和。
Need Data in below Format from the above table ---------------------------------------------- A - - 15 A a - 10 A a aa 4 A a ab 6 A b - 5 A b ba 4 A b bb 1 B - - 21 B c - 12 B c ca 6 B c cb 6 B d - 9 B da da 9
請幫我。
select cat1, cat2, cat3, sum(val) as val from t1 join t2 on t1.f_id = t2.f_id group by grouping sets ((cat1),(cat1, cat2),(cat1, cat2, cat3)) order by cat1, cat2 nulls first, cat3 nulls first
輸出
cat1 cat2 cat3 val A 15 A a 10 A a aa 4 A a ab 6 A b 5 A b ba 4 A b bb 1 B 21 B c 12 B c ca 6 B c cb 6 B d 9 B d da 9
如果您更喜歡下劃線而不是
null
使用NVL
select cat1, nvl(cat2,'_') as cat2, nvl(cat3, '_') as cat3, sum(val) from t1 join t2 on t1.f_id = t2.f_id group by grouping sets ((cat1),(cat1, cat2),(cat1, cat2, cat3)) order by cat1, cat2 nulls first, cat3 nulls first