Oracle sql拆分数周

时间:2014-04-03 09:53:38

标签: sql oracle split

所以我有一张表:

    UNIQUE_ID    MONTH
    abc          01
    93j          01
    acc          01
    7as          01
    oks          02
    ais          02
    asi          03
    asd          04

我查询:

select count(unique_id) as amount, month
from table
group by month

现在一切看起来都很棒:

    AMOUNT    MONTH
    4         01
    2         02
    1         03

有没有办法让oracle将数量分成几周? 结果看起来像这样的方式:

    AMOUNT   WEEK
    1        01
    1        02
    1        03
    1        04

1 个答案:

答案 0 :(得分:1)

假设您知道这一年 - 让我们说我们选择2014年,那么您需要每年产生所有周

select rownum as week_no
from all_objects
where rownum<53) weeks

然后说明哪些月份包含周(2014年)

select week_no, to_char(to_date('01-JAN-2014','DD-MON-YYYY')+7*(week_no-1),'MM') month_no
from
(select rownum as week_no
 from all_objects
 where rownum<53) weeks

然后加入您的数据

select week_no,month_no, test.unique_id from (
select week_no, to_char(to_date('01-JAN-2014','DD-MON-YYYY')+7*(week_no-1),'MM') month_no
from
(select rownum as week_no
 from all_objects
 where rownum<53) weeks) wm
join test on wm.month_no = test.tmonth

如上所述,这会为您提供每周的数据。您可以重做查询并按周而不是按月计算。