Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将多行合并到一个查询中_Sql_Oracle - Fatal编程技术网

Sql 将多行合并到一个查询中

Sql 将多行合并到一个查询中,sql,oracle,Sql,Oracle,我有一个名为PO,PR,MR的表。它们每个都有相同的客户id,但不同的id。我如何才能使输出像这样 ID_PO | ID_PR | ID_MR 1 - - 2 - - 3 - - - A - - B - - C - - -

我有一个名为PO,PR,MR的表。它们每个都有相同的客户id,但不同的id。我如何才能使输出像这样

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