oracle主从关系表查询,Oracle 主从表联合查询解决方法
Oracle 主從表聯合查詢
表A
id???type???name
1????E??????AA
2????F
表B
id???Aid????name
1????2??????BB
2????2??????CC
表B?是表A的子表
如果表A中的type是F,就需要根據Aid?去表B里找對應的name,然后拼接起來
數據庫是Oracle10G?需要查詢的結果:
Aid?????type?????name
1???????E????????AA
2???????F????????BB,CC
------解決方案--------------------
with?a?as(
select?1?id,'E'?type,'AA'?name?from?dual
union?all
select?2,'F',null?from?dual
),b?as(
select?1?id,?2?aid,?'BB'?name?from?dual
union?all
select?2,2,'CC'?from?dual
)
select?a.id,?a.type,?wm_concat(nvl(a.name,?b.name))
from?a,?b
where?a.id?=?b.aid(+)
group?by?a.id,?a.type;
ID?TYPE?WM_CONCAT(NVL(A.NAME,B.NAME))
----------?----?--------------------------------------------
1?E????AA
2?F????BB,CC
------解決方案--------------------
WITH?TABLE1?AS(
SELECT?'1'?AS?Aid,?'E'?AS?type,'AA'?as?name?FROM?dual
union?all
SELECT?'2'?AS?Aid,?'F'?AS?type,''?as?name?FROM?dual
union?all
SELECT?'3'?AS?Aid,?'F'?AS?type,''?as?name?FROM?dual
union?all
SELECT?'4'?AS?Aid,?'A'?AS?type,'FF'?as?name?FROM?dual
),
TABLE2?AS?(
SELECT?'1'?AS?id,?'2'?AS?Aid,'BB'?as?name?FROM?dual
union?all
SELECT?'2'?AS?id,?'2'?AS?Aid,'CC'?as?name?FROM?dual
union?all
SELECT?'3'?AS?id,?'3'?AS?Aid,'DD'?as?name?FROM?dual
union?all
SELECT?'4'?AS?id,?'3'?AS?Aid,'EE'?as?name?FROM?dual
)
SELECT?T1.Aid,
T1.TYPE,
LISTAGG(nvl(T1.NAME,?T2.NAME),',')WITHIN?GROUP(ORDER?BY?id)?AS?NAME
總結
以上是生活随笔為你收集整理的oracle主从关系表查询,Oracle 主从表联合查询解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《日长》第十二句是什么
- 下一篇: 题目1 一天,有个年轻人来到鞋店里买了一