嗨,我正在努力创建一个程序来计算每天的待办事项。
例如:我在一张桌子上有一张ticket_submitdate和resolved_date的票,分别是2015年9月12日和2015年9月15日。此票据应该作为backlog_table中的待办事项处理,因为它没有在与ticket_submitdate相同的一天被解析。
我在backlog_table中有另一列date_col,其中显示了票证的待办日期,即,它应该在ticket_backlog表中,日期分别是13-9月-2015年和14-9月-2015年,而date_col列应该有这两个日期的票。
请帮帮忙。提前谢谢。
发布于 2015-09-28 08:12:06
以下是一些测试数据:
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');此查询生成跨越待办事项记录范围的日期列表,并将其连接到待办事项处理中。
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_NOs列表:
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,因为它是在提交之日解决的。您可能需要调整过滤器以适应实际的业务规则。
发布于 2015-09-28 07:46:51
我不确定我是否理解您的问题,如果您正在查找两个日期范围之间的所有日期,那么您可以使用以下查询-
select trunc(date_col2+lv) from
(select level lv from dual connect by level < (date_col1-date_col2-1) )
order by 1https://stackoverflow.com/questions/32817644
复制相似问题