2013-05-21 208 views
1

在完成以下查询之后,我们将缺少天,现在我想添加额外的过滤器,即如果任何显示的日期与下面的查询是星期六和星期日它必须删除这些日期,所以这些日期应该不会显示任何人都可以指导我如何扩展此筛选器在下面的查询.. 下面的查询我从这个论坛得到,但随着这个查询我需要一些查询,这将满足我上述问题。请帮助我如何修改这个查询需要Oracle查询帮助

with date_range as (
    select min(the_date) as oldest, 
     max(the_date) as recent, 
     max(the_date) - min(the_date) as total_days 
    from your_table 
), 
    all_dates as (
    select oldest + level - 1 as a_date 
    from date_range 
    connect by level <= (select total_days from date_range) 
    ) 
    select ad.a_date 
    from all_dates ad 
    left join your_table yt on ad.a_date = yt.the_date 
    where yt.the_date is null 
    order by ad.a_date; 
+1

“max(the_date) - min(the_date)as total_days”不包括在内 - 如果从1月1日到2月1日的total_days被假定为“2”,则对此加1。 –

回答

0

添加条件:

and to_char(ad.a_date, 'Dy') not in ('Sat','Sun') 

- 您where条款。

+1

更好的是这样'to_char(ad.a_date,'Dy','NLS_DATE_LANGUAGE = ENGLISH')'否则它可能无法用于不同的NLS_DATE_FORMATs http://www.sqlfiddle.com/#!4/d41d8/11183 –

+0

好的,非常感谢.. – user1625419