您好我正在尝试创建一个计算每天积压的程序。
例如:我在12-sep-2015上有一张ticket_submitdate
的票,在一张表中有一张15-sep-2015的resolved_date
。此票证应作为backlog_table
的待办事项,因为它在ticket_submitdate
的同一天未得到解决。
我在date_col
中有另一列backlog_table
,其中显示了故障单作为积压的日期,即它应该在ticket_backlog
表中的日期13- sep-2015和14-sep-2015以及date_col
列应该包含这两个日期的票证。
请帮忙。 提前谢谢。
答案 0 :(得分:0)
我不确定我理解你的问题,如果你正在寻找两个日期范围之间的所有日期,那么你可以使用以下查询 -
select trunc(date_col2+lv) from
(select level lv from dual connect by level < (date_col1-date_col2-1) )
order by 1
答案 1 :(得分:0)
以下是一些测试数据:
create table backlog (ticket_no number, submit_date date, resolved_date date);
insert into backlog values (100, date '2015-09-12', date '2015-09-15');
insert into backlog values (200, date '2015-09-12', date '2015-09-14');
insert into backlog values (300, date '2015-09-13', date '2015-09-15');
insert into backlog values (400, date '2015-09-13', date '2015-09-16');
insert into backlog values (500, date '2015-09-13', date '2015-09-13');
此查询生成一个跨越BACKLOG记录范围的日期列表,并将它们连接到BACKLOG。
with dt as ( select min(submit_date) as st_dt
, greatest(max(resolved_date), max(submit_date)) as end_dt
from backlog)
, dt_range as ( select st_dt + (level-1) as date_col
from dt
connect by level <= ( end_dt - st_dt ))
select b.ticket_no
, d.date_col
from backlog b
cross join dt_range d
where d.date_col between b.submit_date and b.resolved_date
and b.submit_date != b.resolved_date
order by b.ticket_no
, d.date_col
/
因此,它会生成一个包含所有日期的TICKET_NO列表:
TICKET_NO DATE_COL
---------- ---------
100 12-SEP-15
100 13-SEP-15
100 14-SEP-15
100 15-SEP-15
200 12-SEP-15
200 13-SEP-15
200 14-SEP-15
300 13-SEP-15
300 14-SEP-15
300 15-SEP-15
400 13-SEP-15
400 14-SEP-15
400 15-SEP-15
14 rows selected.
SQL>
结果集不包括#500票证,因为它在提交当天已解决。您可能需要调整过滤器以适合您的实际业务规则。