首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

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

2013-06-19 
一段时间关系的SQLT1CCN,ORDATE,NUMC,2013-01-05,12C,2013-01-25,14C,2013-02-03,21......T2YEAR,BEGIN,P1

一段时间关系的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

热点排行