【发布时间】:2017-02-17 21:23:36
【问题描述】:
我有一张桌子
Create table t (
employee varchar2(10),
job varchar2(5),
start_date date,
end_date date,
FTE number
);
里面有这个数据:
insert into t values (1111,1,19-May-2008,18-May-2010,100);
insert into t values (1111,1,19-May-2010,30-Jun-2010,100);
insert into t values (1111,1,01-Jul-2010,13-Feb-2011,100);
insert into t values (1111,1,14-Feb-2011,13-Feb-2012,100);
insert into t values (1111,1,14-Feb-2012,13-Feb-2013,100);
insert into t values (1111,1,14-Feb-2013,27-Nov-2013,100);
insert into t values (1111,1,15-Nov-2013,27-Nov-2013,100);
insert into t values (1111,1,28-Nov-2013,24-Aug-2014,60);
insert into t values (1111,1,25-Aug-2014,24-Aug-2015,60);
insert into t values (1111,1,15-Nov-2014,24-Aug-2015,60);
insert into t values (1111,1,25-Aug-2015,14-Nov-2015,68.571);
insert into t values (1111,1,15-Nov-2015,31-Mar-2016,68.571);
insert into t values (1111,1,01-Apr-2016,11-Sep-2016,68.571);
insert into t values (1111,1,12-Sep-2016,29-Sep-2016,72.857);
insert into t values (1111,1,30-Sep-2016,10-Nov-2016,91.429);
insert into t values (1111,1,11-Nov-2016,14-Nov-2016,100);
insert into t values (1111,1,15-Nov-2016,23-Apr-2017,100);
insert into t values (1111,1,24-Apr-2017,14-Jan-2018,60);
insert into t values (1111,1,15-Jan-2018,31-May-2019,71.429);
insert into t values (1111,1,01-Jun-2019,31-Dec-2049,100);
我希望按正确的开始日期和结束日期分组显示 FTE 数据,使其看起来像这样
1111 1 19/05/2008 27/11/2013 100
1111 1 28/11/2013 24/08/2015 60
1111 1 25/08/2015 11/09/2016 68.571
1111 1 12/09/2016 29/09/2016 72.857
1111 1 30/09/2016 10/11/2016 91.429
1111 1 11/11/2016 23/04/2017 100
1111 1 24/04/2017 14/01/2018 60
1111 1 15/01/2018 31/05/2019 71.429
1111 1 1/06/2019 31/12/2049 100
我该怎么做?我试图做的是列出 FTE 发生更改的时间以及更改发生时的相应开始日期和结束日期。
【问题讨论】:
-
好友:您在表声明中的列名
job之前有一个错误的左括号(。日期至少应该是字符串,用单引号'括起来,即使您依赖会话nls_date_format。以及如何将 92.429 插入声明为int的列中? +1 用于提供可用格式的测试数据;但 -0.5 表示在发布之前没有自己测试。