三个表,均使用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表
.............
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表
.............
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;
结果可能如下:
ID RZ M1 10 5 <-取自B表
1 20 10 <-取自C表不允许ID相同出现。