我有以下问题。我想加入两个表。
第一个表具有如下条目:
T1 PK Info 1 one 2 two 3 three
第二个表是这样构建的:
T2 PK FKT1 1 1,3 2 1,2,3 3 2
我的结果应显示以下内容
PK2 FKT1 InfoT1 1 1,3 One,Three 2 1,2,3 One,two,Three 3 2 Two
我只是不知道如何解决这个问题。
仅使用sql selects可能需要此功能吗?
亲切的问候
并不是那么困难,但是-就像你被告知的那样,你宁愿不要那样做。
SQL> with 2 t1 (pk, info) as 3 (select 1, 'one' from dual union 4 select 2, 'two' from dual union 5 select 3, 'three' from dual 6 ), 7 t2 (pk, fkt1) as 8 (select 1, '1,3' from dual union 9 select 2, '1,2,3' from dual union 10 select 3, '2' from dual 11 ), 12 t2rows as 13 (select pk, regexp_substr(fkt1, '[^,]+', 1, column_value) fkt1, column_value rn 14 from t2, 15 table(cast(multiset(select level from dual 16 connect by level <= regexp_count(fkt1, ',') + 1 17 ) as sys.odcinumberlist)) 18 ) 19 select t2r.pk, 20 listagg(t2r.fkt1, ',') within group (order by t2r.rn) fkt1, 21 listagg(t1.info, ',') within group (order by t2r.rn) infot1 22 from t2rows t2r join t1 on t2r.fkt1 = t1.pk 23 group by t2r.pk 24 order by t2r.pk; PK FKT1 INFOT1 ---------- -------------------- -------------------- 1 1,3 one,three 2 1,2,3 one,two,three 3 2 two SQL>