读书人

一段时间关系的SQL解决方案

发布时间: 2013-06-19 10:26:41 作者: rapoo

一段时间关系的SQL

T1

CCN,ORDATE,NUM
C,2013-01-05,12
C,2013-01-25,14
C,2013-02-03,21
......
T2
YEAR,BEGIN,P1,P2
2013,2013-01-01,2013-01-26,2013-02-20
......



如果T1.ORDATE的时间在T2的BEGIN到P1,那后面加一个字段P1,如果是在P1到P2之间值就是P2

CCN,ORDATE,NUM,PER
C,2013-01-05,12,P1
C,2013-01-25,14,P1
C,2013-02-03,21,P2
[解决办法]

引用:
T2
每年只有一条记录

因为以前系统是按月分析数据的,但是有些时候是不是按月而是按一段时间,比如P1周期是从2013年1月1日开始到1月26日 1-27到2月的某个日期就是P2周期了。

我没有建表测试,不知道有没有问题:
select t1.*,
case
when t1.ORDATE between t2.BEGIN and t2.p1 then
'P1'
when t1.ORDATE between t2.p1 and t2.p2 then
'P2'
end
from t1, t2
where to_char(t1.ORDATE, 'yyyy') = t2.year

读书人网 >oracle

热点推荐