SELECT TEXT FROM
(select row_number()over(order by A_ID)||'、'||A_ID||CHR(9)||A_content TEXT,A_ID,NULL TIME FROM A
UNION ALL
SELECT B_ID||CHR(9)||B_FKNR||CHR(9)||B_TIME||CHR(9)||F_A_ID TEXT,F_A_ID,B_TIME TIME FROM B)
ORDER BY A_ID,TIME DESC

解决方案 »

  1.   


    with A as
    (
    select 'A1' A_ID,'GZBZ1' A_CONTENT  FROM DUAL UNION ALL
    select 'A2' A_ID,'GZBZ2' A_CONTENT  FROM DUAL UNION ALL
    select 'A3' A_ID,'GZBZ3' A_CONTENT  FROM DUAL
    ),
    B AS
    (
    SELECT 'B1' B_ID,'S1' B_FKNR,SYSDATE B_TIME,'A1' F_A_ID FROM DUAL UNION ALL
    SELECT 'B2' B_ID,'S2' B_FKNR,SYSDATE B_TIME,'A1' F_A_ID FROM DUAL UNION ALL
    SELECT 'B3' B_ID,'S3' B_FKNR,SYSDATE B_TIME,'A1' F_A_ID FROM DUAL UNION ALL
    SELECT 'B4' B_ID,'S4' B_FKNR,SYSDATE B_TIME,'A2' F_A_ID FROM DUAL UNION ALL
    SELECT 'B5' B_ID,'S5' B_FKNR,SYSDATE B_TIME,'A2' F_A_ID FROM DUAL UNION ALL
    SELECT 'B6' B_ID,'S6' B_FKNR,SYSDATE B_TIME,'A3' F_A_ID FROM DUAL 
    )
    SELECT * FROM(
    SELECT DISTINCT A.A_ID C1,A.A_CONTENT C2,NULL C3,NULL C4 FROM A,B WHERE A.A_ID=B.F_A_ID
    UNION ALL
    SELECT B.B_ID C1,B.B_FKNR C2,B_TIME C3,F_A_ID C4 FROM B,A WHERE A.A_ID=B.F_A_ID)
    ORDER BY DECODE(C4,NULL,C1,C4),C3 DESC;
      

  2.   

    如果A,B表的主键是UUID的怎么排序呢
      

  3.   

    select *
      from (select a.aid as b_id, a.a_content as b_fknr, null as b_time, a.aid
              from a
            union all
            select aa.b_id, aa.b_fknr, aa.b_time, aa.aid
              from a a, aa aa
             where a.aid = aa.aid)
             order by aid ,b_id