select to_char(sysdate, 'ww'), sum(金额) from table
group by to_char(sysdate, 'ww')

解决方案 »

  1.   

    几年前写了一个function,找不到原始代码了,给你一个wrapped的,你看一下是否符合需求
    此函数接受一个日期参数,返回自然周。create or replace function TO_PRO$WEEK wrapped 
    0
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    abcd
    3
    8
    8106000
    1
    4

    1a
    2 :e:
    1FUNCTION:
    1TO_PRO$WEEK:
    1RQ:
    1DATE:
    1RETURN:
    1VARCHAR2:
    1RESULT:
    12:
    1ISOWEEK:
    1TO_CHAR:
    1IW:
    1CURRMONTH:
    1MM:
    1TRUNC:
    1YYYY:
    1=:
    101:
    112:
    153:
    152:
    1ELSIF:
    1+:
    11:
    19:
    10:
    1||:
    00
    0
    9f
    2
    0 a0 1d 8d 8f a0 b0 3d
    b4 :2 a0 a3 2c 6a a0 51 a5
    1c 81 b0 a3 a0 51 a5 1c
    :2 a0 6e a5 b 81 b0 a3 a0
    51 a5 1c :2 a0 6e a5 b 81
    b0 :3 a0 6e a5 b 6e a5 b
    7e 6e b4 2e a0 7e 6e b4
    2e a0 7e 6e b4 2e a 10
    a0 6e d b7 :2 a0 d b7 :2 19
    3c b7 a0 3e :2 6e 5 48 a0
    7e 6e b4 2e a 10 a0 6e
    d a0 b7 a0 7e 6e b4 2e
    a0 7e 6e b4 2e a 10 a0
    6e d b7 19 :2 a0 7e 51 b4
    2e d a0 3e :2 51 48 63 a0
    6e 7e a0 b4 2e d b7 19
    3c b7 :2 19 3c b7 :2 19 3c :2 a0
    65 b7 a4 a0 b1 11 68 4f
    17 b5 
    9f
    2
    0 3 7 8 21 1d 1c 29
    19 2e 32 56 3a 3e 42 46
    49 4a 52 39 82 61 36 65
    66 6e 72 76 7b 7c 7e 60
    ae 8d 5d 91 92 9a 9e a2
    a7 a8 aa 8c b5 b9 bd c1
    89 c6 c8 cd ce d0 d3 d8
    d9 de e2 e5 ea eb f0 f4
    f7 fc fd 1 102 107 10b 110
    114 116 11a 11e 122 124 128 12c
    12f 131 1 135 13a 13f 143 146
    14a 14d 152 153 1 158 15d 161
    166 16a 16e 170 174 177 17c 17d
    182 186 189 18e 18f 1 194 199
    19d 1a2 1a6 1a8 1ac 1b0 1b4 1b7
    1ba 1bb 1c0 1c4 1 1c8 1cb 1ce
    1d1 1d4 1d8 1dd 1e0 1e4 1e5 1ea
    1ee 1f0 1f4 1f7 1f9 1fd 201 204
    206 20a 20e 211 215 219 21d 21f
    223 227 229 235 239 23b 244 
    9f
    2
    0 :2 1 a 16 1c :2 16 15 22
    29 4 :2 1 b 14 13 :2 b :2 4
    c 15 14 c 1b 23 26 :2 1b
    c :2 4 e 17 16 e 1d 25
    28 :2 1d e 4 8 10 16 19
    :2 10 21 :2 8 26 27 :2 26 c 13
    14 :2 13 1d 26 27 :2 26 :3 c 16
    c 2c c 16 c :4 9 2c :2 b
    17 1c :2 b 26 2f 30 :2 2f :3 b
    15 b 8 35 e 15 16 :2 15
    1f 28 29 :2 28 :2 e b 15 b
    2e 35 b 15 1c 1d :2 15 b
    :2 e 1d 23 :3 e 18 1c 1f :2 18
    e 25 :2 b :4 8 :5 5 c 5 :2 1
    5 :6 1 
    9f
    2
    0 :a 1 2 :2 1 :6 2 :c 3 :c 4 :d 6
    :c 8 :3 a 8 :3 d :2 b :2 8 6 :d 11
    :3 13 14 11 :c 14 :3 16 14 11 :7 19
    :6 1a :7 1c :3 1a :2 17 :2 11 :2 f :2 6 :3 21
    :2 5 22 :3 1 22 :2 1 
    246
    4
    :3 0 1 :4 0 2
    :a 0 9b 1 :4 0
    5 :2 0 3 4
    :3 0 3 :7 0 6
    5 :3 0 5 :3 0
    6 :3 0 8 :2 0
    9 8 a 0
    9b 3 c :2 0
    6 :3 0 8 :2 0
    7 e 10 :6 0
    13 11 0 99
    7 :6 0 8 :2 0
    10 6 :3 0 b
    15 17 :6 0 a
    :3 0 3 :3 0 b
    :4 0 d 19 1c
    1f 18 1d 99
    9 :6 0 19 :2 0
    17 6 :3 0 12
    21 23 :6 0 a
    :3 0 3 :3 0 d
    :4 0 14 25 28
    2b 24 29 99
    c :6 0 a :3 0
    e :3 0 3 :3 0
    f :4 0 2d 30
    b :4 0 1c 2c
    33 10 :2 0 11
    :4 0 21 35 37
    :3 0 9 :3 0 10
    :2 0 11 :4 0 26
    3a 3c :3 0 c
    :3 0 10 :2 0 12
    :4 0 2b 3f 41
    :3 0 3d 43 42
    :2 0 7 :3 0 13
    :4 0 45 46 0
    48 2e 4e 7
    :3 0 9 :3 0 49
    4a 0 4c 30
    4d 0 4c 0
    4f 44 48 0
    4f 32 0 50
    35 91 9 :3 0
    13 :4 0 14 :4 0
    37 :3 0 51 52
    55 c :3 0 10
    :2 0 11 :4 0 3c
    58 5a :3 0 56
    5c 5b :2 0 7
    :3 0 11 :4 0 5e
    5f 0 62 15
    :3 0 3f 8d 9
    :3 0 10 :2 0 11
    :4 0 43 64 66
    :3 0 c :3 0 10
    :2 0 12 :4 0 48
    69 6b :3 0 67
    6d 6c :2 0 7
    :3 0 13 :4 0 6f
    70 0 72 4b
    73 6e 72 0
    8e 7 :3 0 9
    :3 0 16 :2 0 17
    :2 0 4d 76 78
    :3 0 74 79 0
    8b 7 :3 0 17
    :2 0 18 :2 0 7b
    7c 80 7d 7e
    0 7 :3 0 19
    :4 0 1a :2 0 7
    :3 0 50 83 85
    :3 0 81 86 0
    88 53 89 7f
    88 0 8a 55
    0 8b 57 8c
    0 8b 0 8e
    5d 62 0 8e
    5a 0 8f 5e
    90 0 8f 0
    92 38 50 0
    92 60 0 96
    5 :3 0 7 :3 0
    94 :2 0 96 6a
    9a :3 0 9a 2
    :3 0 66 9a 99
    96 97 :6 0 9b
    :2 0 3 c 9a
    9d :2 0 2 9b
    9e :8 0 
    6e
    4
    :2 0 63 1 4
    1 7 1 f
    1 b 1 16
    2 1a 1b 1
    14 1 22 2
    26 27 1 20
    2 2e 2f 2
    31 32 1 36
    2 34 36 1
    3b 2 39 3b
    1 40 2 3e
    40 1 47 1
    4b 2 4e 4d
    1 4f 2 53
    54 1 59 2
    57 59 1 60
    1 65 2 63
    65 1 6a 2
    68 6a 1 71
    2 75 77 2
    82 84 1 87
    1 89 2 7a
    8a 3 8d 73
    8c 1 8e 2
    91 90 3 :2 0
    3 12 1e 2a
    3 92 95 9c1
    4

    9d
    0
    1
    14
    1
    5
    0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0
    0 0 0 0 
    20 1 0
    4 1 0
    3 0 1
    b 1 0
    14 1 0
    0/
      

  2.   

    加上条件 where to_char(sysdate, 'D') in ('2','3','4','5','6')
      

  3.   

    楼上可以满足楼主需求
    select sum(金额) from table where to_char(sysdate, 'D') in ('2','3','4','5','6')
      

  4.   

    bobo兄,好象你没有按自然周分组啊,是不符合楼主要求的。
      

  5.   

    如果只有自然周产生业务,则Michaelyfj(星星还是那颗星星)的就可以。
      

  6.   

    楼主是按一年有53周作分组,就用以下方法吧
    select to_char(日期,'ww'),sum(金额) from table where to_char(日期, 'D') in ('2','3','4','5','6') group by to_char(日期,'ww')
      

  7.   

    不过最好是这样:
    >select to_char(date, 'yyyyww'), sum(金额) from table
    group by to_char(date, 'yyyyww');这样可以区分不同年份的周.