假设我有一张桌子
INPUT Table:
Col1 | Col2
-----------
A | B
B | C
C | D
F | G
G | H
I | J
K | Null
我们可以编写一个SQL查询来打印这样的输出
OUTPUT Table:
Parent | C1 | C2 | C3
----------------------
A | B | C | D
F | G | H | Null
I | J | Null Null
K | Null Null Null
我要采取的方法是在Table2.Co2 = Table1.Col1上使用自联接 但是,我很难同时添加列和动态获取所需列数的逻辑
还有一个后续问题,如果给了我们输出表,是否可以编写查询以获取输入表
可以是任何sql-oracle,mysql等
提前谢谢!
答案 0 :(得分:1)
您的样本数据具有简单的线性关系,深度为3。您可以使用left join
s来解决此问题:
select t1.col1 as parent, t2.col2 as c1, t3.col2 as c2, t4.col2 as c3
from t t1 left join
t t2
on t2.col1 = t1.col2 left join
t t3
on t3.col1 = t2.col2 left join
t t4
on t4.col1 = t3.col2
where not exists (select 1 from t tp where tp.col2 = t1.col1);