sql - 使用 SQL 并排显示父项和所有子项
问题描述
假设我有一张桌子
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 等
先感谢您 !
解决方案
你的样本数据有一个简单的线性关系,三个深度。你可以用 s 处理这个left join
:
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);
推荐阅读
- python - 如何在pygame中获得可变键盘输入?
- microsoft-dynamics - 日期过滤器未覆盖正确的时间范围
- r - 保持一种文档的词频和逆
- certificate - Traefik 始终提供默认证书
- c++ - 模板类构造函数中外部常量的奇怪问题
- python - Bot 无法连接到语音通道 - discord.py 重写
- javascript - 如何使用 sequelize.js 将表的列设置为外键
- java - Spark 作业在 oozie 中因启用 hive 支持而失败
- javascript - 将样式表传递给 Lit-Element Web 组件
- python - 我得到“模块'pandas'没有属性'to_datetimeIndex'”