我又一个表,记录四类信息,我想把其中的两类用外连接组织起来,而且他们存在对应关系。可我用下面的语句:select a.a1,b.a1 from sys tab1 as a full outer join tab1 as b on a.a2=b.a2 where 
  a.a3=1 and b.a3=2 and a.a4=4
来实现的时候却把不同时满足的记录给去掉了,和使用WHERE没有什么区别。
难道是SQL2000不支持同一个表的外连接吗?
不知道我说清楚了没有。恳请帮助!

解决方案 »

  1.   

    没太看懂,你的where 条件写的不够应该
      

  2.   

    表结构:
    table1:
    dz02      dz04      dz05      dz07
    ------------------------------------
    1         1          101      001
    1         1          102      002
    1         0          103      null
    2         1          a001     003
    2         0          a002     null
    2         0          a003     null
    4         0          d001     null
    4         1          d002     001
    4         0          d003     null
    ------------------------------------
    我想得到:
    dz07     dz05(1)     dz05(2)   dz04
    -----------------------------------
    001       101         d002      1
    002       102         null      1也就是说:
    我要统计的是dz02=1 and dz02=4 and dz04=1 的数据,而且dz02=1 和dz02=4的数据根据dz07的内容来对应,如果dz02=4 中没有和dz02=1 中相对应的数据则dz05(2)用null来代替不知道我这样描述大家清楚了没有,望赐教。严重感谢!
      

  3.   

    select a.a1,b.a1 
    from sys tab1 a LEFT OUTER JOIN tab1 b on a.a2=b.a2]
    where a.a3=1 and b.a3=2 and a.a4=4
    这样应该可以
      

  4.   

    broook():我这样试过了,他把a中有的而在b中没有的那条记录没有给列出来
      

  5.   

    这样再试试看:
    selet a.dz05,b.dz05,a.dz07 
    from table1 a LEFT OUTER JOIN table b
    on a.dz07= b.dz07 and a.dz02 = 1 and b.dz02 = 4 and a.dz04 = 1
    感觉这个表有些乱
      

  6.   

    broook() :出现了笛卡尔积,还是不行。
    不过仍然谢谢,到时会给你分的
      

  7.   

    问题我自己解决了,方法如下:
    1,创建两个视图:
    create view vw_bd as 
    select * from table1 where dz02='1' and dz04='1' 
    create view vw_fp as 
    select * from table1 where dz02='4' and dz04='1'
    go
    2,使用外连接:
    SELECT *
    FROM vw_bd as a LEFT OUTER JOIN
          vw_fp as b ON a.dz07 = b.dz07
    go