什么意思啊,你的条件那有那么复杂啊,
不就是
A1 = B1)  AND  (B4 〉A4)  
AND (B2  =  A2) 
AND (B3  =  A3) 么

解决方案 »

  1.   

    AND ((B2  =  A2)  OR  ((B2  is  null)  AND  (A2  is  null))  AND ((B2  is  null)  AND  (A2  is  not  null )))  AND ((B3  =  A3)  OR  ((B3  is  null)  AND  (A3  is  null))  AND ((B3  is  null)  AND  (A3  is  not  null )))其中的
    OR  ((B2  is  null)  AND  (A2  is  null))  AND ((B2  is  null)  AND  (A2  is  not  null ))
    这样的条件,你再看看?是不是什么地方写错了?
    B2等于null,A2等于null,并且不等于Null。
      

  2.   

    我简化了你的问题,是不是这样子的?
    CREATE TABLE USRSZZZ.T1
    (
        F1                             CHAR(1),
        F2                             CHAR(1),
        F3                             CHAR(1)
    )
    /F1       F2       F3
    1 1        (null)
    1 1 1
    2 (null) (null)
    3 3 (null)
    4        4        4 你想得到后面4条,是吗?是这个需求吗?
      

  3.   

    假如还有
    1 (null) (null)
    这样的数据,需要显示吗?
      

  4.   

    不好意思,我没说清楚:
    题目的意思是:(A1=B1 AND A4>B4) AND(条件1)AND (条件2),
    条件1:就是B2与A2之间的关系:
    满足条件的是:(B2=A2 )或 (B2是null且A2也是null )或(B2是null且A2不是null)
    这里存在一个漏洞,就是当B表中记录比A表多时:B表中存在两条这样的记录:
    A表:
    A1=“001”,A2=“2”,A3=“3”,A4=100
    B表:
    B1=“001”,B2=“2”, A3=“3”,B4=120
    B1=“001”,B2 is null, A3=“3”,B4=140
    这样会查询出来两条记录,我本来只需要B2=“2”的记录????????????条件2:就是B3与A3之间的关系:  如条件1,也同样存在这个问题;谢谢各位!
      

  5.   

    这样的话在嵌套一层就是了
    过滤掉b1相同,b2 is null的结果数据。
      

  6.   

    我知道要过滤,但不知道怎么写SQL,谢谢大虾!
      

  7.   

    如果只是想要a表中全部行的话,可以这样写:
      select *
      from a left outer join (select b1,max(b2) as b2,max(b3) as b3,max(b4) as b4   from b group by b1) c on a.a1=c.a1 and a4>c4 and (a2=c2 or c2 is null) and (a3=c3  or c3 is null);
    你试一下,是不是能满足你的要求。
      

  8.   

    呵呵,有几个列名写错了,应该这样写:
     select *
      from a left outer join (select b1,max(b2) as b2,max(b3) as b3,max(b4) as b4   from b group by b1) c on a.a1=c.b1 and a.a4>c.b4 and (a.a2=c.b2 or c.b2 is null) and (a.a3=c.b3  or c.b3 is null);
      

  9.   

    TO:jinshe5805_cn(逸风) ,不好意思,除了A4和B4是数字型的外,其它的都是字符型
    字段名    类型      长度  A1              char        20A2              varchar            50A3              varchar            50A4              decimal(20,6) 表B:字段名    类型      长度  B1              char        20B2              varchar            50B3              varchar            50B4              decimal(20,6)
      

  10.   

    to:xxc1981(asf)
     不是很长啊 我们开发中有好多比这个长的。^_^
      

  11.   

    to: dejkstro(立刻死臭).
    你们是做什么项目的?