将时间点的数据变成时间段的数据

Posted 碧水幽幽泉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将时间点的数据变成时间段的数据相关的知识,希望对你有一定的参考价值。

已知数据如下:
PC     E     D
工     5      2016-09-01
工     6      2016-09-30
公     5      2016-09-01
公     6      2017-09-30

加入查询开始日期是2016-09-01,结束日期2016-10-07

希望将上面数据变成:
PC        E         S                        N
工         5         2016-09-01      2016-09-30
工         6         2016-09-30      2016-10-07
公         5         2016-09-01      2016-10-07

--创建测试表
create table tmp as 
select  PC, 5 E, to_date(2016-09-01,yyyy-mm-dd) D from dual union all
select  PC, 6 E, to_date(2016-09-30,yyyy-mm-dd) D from dual union all
select  PC, 5 E, to_date(2016-09-01,yyyy-mm-dd) D from dual union all
select  PC, 6 E, to_date(2017-09-30,yyyy-mm-dd) D from dual;

--写法1:
select pc,e,case when to_date(2016-09-01,yyyy-mm-dd) >= d then to_date(2016-09-01,yyyy-mm-dd) else d end s,
       nvl(lead(d,1)over(partition by pc order by d),to_date(2016-10-07,yyyy-mm-dd)) as d from tmp
 where d <= to_date(2016-10-07,yyyy-mm-dd)
 order by pc,s;

--写法2: 
select pc,e,d as s,
       nvl(lead(d,1)over(partition by pc order by d),to_date(2016-10-07,yyyy-mm-dd)) as n 
  from tmp 
 where d <=to_date(2016-10-07,yyyy-mm-dd)
 order by pc,s;

 

以上是关于将时间点的数据变成时间段的数据的主要内容,如果未能解决你的问题,请参考以下文章

将代码片段插入数据库并在 textarea 中以相同方式显示

将 OpenGL 片段着色器设置为仅通过漫反射减少 vec4 色点的 RGB 值,而不是 alpha

将数据从底部工作表对话框片段传递到片段

将一个点变成另一个点的算法

将数据从活动发送到片段android工作室[重复]

如何将字符串数据从活动发送到片段?