将来自2个不同表的多行的数据转换为SQL中的列

时间:2014-08-20 03:32:01

标签: sql oracle

考虑以下表格及其关系

  1. 客户表(M_CLIENT)将有一个客户端
  2. M_CLIENT_DRIVER将拥有客户端ID和多个驱动程序组ID(现在考虑1个驱动程序组ID)
  3. M_CLIENT_DRIVER_OWNERS表将拥有多个驱动程序组所有者(现在考虑为客户端提供5个驱动程序)。
  4. M_CLIENT_OWNERS将为客户提供多个所有者 (现在考虑5位业主)
  5. 第3,4号点可能包含也可能不包含数据。表M_CLIENT_OWNERS,M_CLIENT_DRIVER_OWNERS中的所有者ID无法加入,他们没有任何关系。
  6. M_CLIENT_OWNERS,M_CLIENT_DRIVER_OWNERS最多可拥有0到5个拥有者。
  7. 在此示例中,我假设有1个客户端,1个驱动程序ID,5个驱动程序所有者,5个客户端所有者。

    SELECT A.CLIENT_ID, A.CLIENT_NAME, B.DRIVER_ID
    O.OWNER_ID AS DRIVER_OWNER_ID, CO.OWNER_ID AS CLIENT_OWNER_ID
    FROM M_CLIENT A, M_CLIENT_DRIVER B, M_CLIENT_DRIVER_OWNERS O, M_CLIENT_OWNERS CO
    WHERE A.CLIENT_ID = B.CLIENT_ID
    AND B.DRIVER_GRP_ID = O.DRIVER_GRP_ID(+)
    AND A.CLIENT_ID = CO.CLIENT_ID(+)
    AND A.CLIENT_ID = 23805
    

    有了这个,我得到了25行的输出(基于3,4号点有5 * 5种可能性。)

    预期输出可以是低于(查询中容易的)

    (1)在单行中(参考上面的查询),

    • client,driver_id,driver_owner_id_1,driver_owner_id_2,driver_owner_id_3,driver_owner_id_4,driver_owner_id_5,client_owner_id_1,client_owner_id_2,client_owner_id_3,client_owner_id_4,client_owner_id_5

    OR (2)在多行输出中,如

    • client,driver_id,driver_owner_id_1,client_owner_id_1;
    • client,driver_id,driver_owner_id_2,client_owner_id_2;
    • client,driver_id,driver_owner_id_3,client_owner_id_3;
    • client,driver_id,driver_owner_id_4,client_owner_id_4;
    • client,driver_id,driver_owner_id_5,client_owner_id_5;

    你可以帮我查询一下这个要求吗?

0 个答案:

没有答案