Pra*_*wat 8 oracle join oracle-11g
我有两个表 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
Run Code Online (Sandbox Code Playgroud)
现在我需要以下格式的数据,其中每个类别和子类别都包含 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
Run Code Online (Sandbox Code Playgroud)
请帮我。
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
Run Code Online (Sandbox Code Playgroud)
输出
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
Run Code Online (Sandbox Code Playgroud)
如果您更喜欢下划线而不是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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
342 次 |
最近记录: |