关于全外连接的问题:
现有两个表T1,T2,表结构相同有 日期,数值 两个字段,数据如下:
T1:
日期              数值
2007-01-01      10
2007-01-02      20
2007-01-03      30T2:
日期              数值
2007-01-02      20
2007-01-03      30
2007-01-04      40我想得到的结果
日期              数值T1    数值T2 
2007-01-01      10        NULL        
2007-01-02      20        20
2007-01-03      30        30
2007-01-04      NULL      40我用以下全外连接语句好像不行哦
select * from T1 Full outer join T2 on(T1.日期 = T2.日期)请问要怎么办?

解决方案 »

  1.   

    试了下,没问题,只不过是日期这列要处理一下
    select decode(t1.日期,null,t2.日期,t1.日期),t1.数值,t2.数值 
    from t1 full outer join t2 on t1.a=t2.a
      

  2.   

    我知道了,用nvl(t1.日期,t2.日期)
    不过 bjt 那样也对的。
    谢谢!
      

  3.   

    不需要这么复杂的SQL语句吧,直接选择想要的列不就行了吗?select t1.日期,t1.数值,t2.数值 from t1 full outer join t2 on(t1.日期=t2.日期)或者用select 日期,t1.数值,t2.数值 from t1 full outer join t2 using(日期)
      

  4.   

    更正一下:我提供的两个SQL语句中,第二个是正确的,第一个不标准.
      

  5.   

    你遇到的问题,之前我在csdn上做过总结的 只是个小小的例子~
    你的2007-01-04             NULL             40对应记录
    用上面的查询结果为
        NULL                   NULL             40
    问题出现在你select * from T1上 而2007-01-04是不属于T1的,
    所以出现了Null Null 来full join T2 出现上面的结果~~
    所以只要排除Null 即可~~楼上方法上面已提供。不再赘述