Sql 将多行合并到一个查询中
我有一个名为PO,PR,MR的表。它们每个都有相同的客户id,但不同的id。我如何才能使输出像这样Sql 将多行合并到一个查询中,sql,oracle,Sql,Oracle,我有一个名为PO,PR,MR的表。它们每个都有相同的客户id,但不同的id。我如何才能使输出像这样 ID_PO | ID_PR | ID_MR 1 - - 2 - - 3 - - - A - - B - - C - - -
ID_PO | ID_PR | ID_MR
1 - -
2 - -
3 - -
- A -
- B -
- C -
- - I
- - II
- - III
- - IV
我尝试过使用连接,但是数据太多了您可以使用内部连接组合结果。像这样的
SELECT * FROM PO
INNER JOIN PR ON PO.client_id = PR.client_id
INNER JOIN MR ON MR.client_id = PR.client_id
但由于内部联接基于笛卡尔积,如果表之间的关系是一对多,则可能会得到多个PO和PR条目。假设我理解正确,最好使用union all:
或者,也可以通过编写select语句来代替group by(其中client_id=x…)。许多在线教程介绍如何操作this@EdHeal我尝试过使用select and join,但是数据太多了。为什么不发布您迄今为止尝试过的内容?没错,谢谢:
select id_po, id_pr, id_mr
from (
select id id_po, null id_pr, null id_mr, client_id from po
union all
select null, id, null, client_id from pr
union all
select null, null, id, client_id from mr
) t
group by client_id