现有两张表T1  ,T2T1
eventid        eventcount1
10003          240000
40001          230000
30001          220000
20007          210000
70002          121000
T2
eventid        eventcount2
20007          210000
30010          130000
70002          100000现我要得出下面的结果
eventid     eventcount1       eventcount2
10003       240000               0
40001       230000               0
30001       220000               0
20007       210000               0
70002       121000               0
30010        0                   13000请问SQL 怎么写  谢谢        

解决方案 »

  1.   

    难道没有规律可循?
    SELECT A.EVENTID,NVL(T1.EVENTCOUNT1,0) EVENTCOUNT1, NVL(T2.EVENTCOUNT2,0)
    FROM
    (SELECT eventid  FROM T1 UNION SELECT EVENTID FROM T2) A LEFT JOIN T1 ON A.EVENTID=T1.EVENTID LEFT JOIN T2 ON A.EVENTID=T2.EVENTID)        
      

  2.   

    select a..eventid,nvl(b.eventcount1,0) eventcount1,nvl(c.eventcount2,0) eventcount2
    from 
    (select eventid from t1 union select eventid from t2)a
    left join t1 b on a.eventid=b.eventid
    left join t2 c on a.eventid=c.eventid
      

  3.   

    select t1.eventid,t1.eventcount1,nvl(t2.eventcount2,0)
    from t1,t2
    where t1.eventid=t2.eventid(+)
    union
    select t2.eventid,nvl(t1.eventcount,0),t2.eventcount2
    from t1,t2
    where t1.eventid(+)=t2.eventid
      

  4.   

    select t.eventid,
    nvl(t1.eventcount1,0) eventcount1,
    decode(nvl(t1.eventcount1,0), 0,nvl(t2.eventcount2,0), 0) eventcount2 
    from 
    (select eventid from t1 union select eventid from t2)t,t1,t2
    where t.eventid=t1.eventid(+) and t.eventid=t2.eventid(+)
      

  5.   

    select eventid  , eventcount1 , 0 eventcount2 from T1
    union all
    select eventid  , 0 eventcount1 , eventcount2 from T2 WHERE T2.eventid NOT IN (SELECT eventid  FROM T1) ;