我正在编写一份报告,需要每周提取数据,并在给定的时间段内每月拆分一次。
这是我的要求
1) 我需要从 (1.1.2013) 到 (6.30.2013) 的给定期间的每周数据,每月分手(1 月、2 月、3 月等......)(我有一个解决方案...... )
我期待低于输出。
Week1 01.01.2013 01.07.2013
Week2 01.08.2013 01.14.2013
Week3 01.15.2013 01.21.2013
Week4 01.22.2013 01.28.2013
Week5 01.29.2013 01.31.2013 (Week 5 is Partial week)
Week6 02.01.2013 02.07.2013 (First week of Month 2)
.....
2) 这是我的关键要求,有时我会在月中得到开始日期,比如说 01.08.2013 和结束日期 06.30.2013。在这种情况下,每月休息时间将超出当月。类似(01.08.2013 到 02.07.2013、02.08.2013 到 03.07.2013 等)
所以我的输出应该是
Week1 01.08.2013 01.14.2013
Week2 01.15.2013 01.21.2013
Week3 01.22.2013 01.28.2013
Week4 01.29.2013 02.04.2013 (Week 4 goes to Feb Month)
Week5 02.05.2013 02.07.2013 (Month ends on Week 5 )
Week6 02.08.2013 02.14.2013 (1st week of Month 2)
Week7 02.15.2013 02.21.2013
.....
我在 Oracle 中寻找 SQL 查询。
非常感谢任何输入。
到目前为止,我得到了以下代码(我从 Stackoverflowfourm 得到这个)
select to_char(gen.d,'YYYY "cW"IW')
, min(gen.d)
, max(gen.d)
from (
select to_date('01.01.2013','DD.MM.YYYY') + level -1 d
from dual
connect by level <= 180 -- Instead of End date, I am passing no of days.
) gen
group by
to_char(gen.d,'YYYY "cW"IW')
, to_char(gen.d,'YYYY MM IW')