三个表,均使用ID关联
A表字段为ID,  RZ(数值型)
B表字段为ID,M(数值型),BDATE(开始日期,日期型),EDATE(结束日期,日期型)
C表字段为ID,M(数值型)逻辑是,现在要在B表里取当前日期在开始日期和结束日期范围内取RZ>M的记录,如果当前日期不在开始日期和结束日期范围内,则取C表里RZ>M的记录。希望能给你思路。即最终结果可能如下:ID     RZ    M1      10    5 <-取自B表
2      20    10  <-取自C表
.............

解决方案 »

  1.   

    SELECT a.id, a.rz, b.m
      FROM a, b, c
     WHERE a.id = b.id
           SYSDATE BETWEEN b.bdate AND b.edate AND
           a.rz > b.m
    UNION ALL
    SELECT a.id, a.rz, c.m
      FROM a, b, c
     WHERE a.id = b.id AND
           b.id = c.id AND
           NOT SYSDATE BETWEEN b.bdate AND b.edate AND
           a.rz > c.m;
      

  2.   

    感谢tangren(老兵新手) ,但所得结果不是我想要的。因为按照UNION ALL的结果,相同ID的记录是重复的。
    结果可能如下:
    ID RZ M1 10 5 <-取自B表
    1 20 10 <-取自C表不允许ID相同出现。