本为是我的同事陈为的作品:
该功能可用于统计报表中要求做按日、按月、按季的统计:
1、执行以下SQL语句:
select distinct(to_char(dt,'yyyy-MM-dd')) tjrq from ( select to_date('2008-05-01', 'yyyy-MM-dd')+rownum-1 dt from dual connect by rownum<=to_date('2008-09-20', 'yyyy-MM-dd')-to_date('2008-05-01', 'yyyy-MM-dd') + 1)
该语句可获取2008-05-01到2008-09-20段内的所有日期;
2、将以上语句中的distinct(to_char(dt,'yyyy-MM-dd'))分别改为distinct(to_char(dt,'yyyy-MM'))以及distinct(to_char(dt,'yyyy-q'))则可显示该段日期内的所有月份以及所有季度;
3、以上功能无法实现对周的处理,需另行处理。
知识点解析:
1、distinct:distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。(注:distinct必须放在开头)
2、connect by:递归查询语句,对于树非常有用。