将多行组合到一个查询中

时间:2016-03-23 03:24:13

标签: sql oracle

我的表格为POPRMR。他们每个人都相同 client id,但不同 ID。如何使输出像这样?

ID_PO   |   ID_PR    | ID_MR
1             -         -
2             -         -
3             -         -
-             A         -
-             B         -
-             C         -
-             -         I
-             -         II
-             -         III
-             -         IV

我尝试过使用JOIN,但数据显得太多了

2 个答案:

答案 0 :(得分:0)

您可以使用内部联接合并结果。像这样的东西

SELECT * FROM PO
INNER JOIN PR ON PO.client_id = PR.client_id
INNER JOIN MR ON MR.client_id = PR.client_id

但是因为INNER JOIN基于笛卡尔积,如果表之间的关系是一对多,则可能会获得PO和PR的多个条目。

答案 1 :(得分:0)

假设我理解正确,您可能最好使用union all

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

或许代替group by - where client_id = x ...