select sum(Nvl(sales,0)) from test where substr(id,1,4)

解决方案 »

  1.   

    select sum(Nvl(sales,0)),substr(id,1,4) id from test group by id
      

  2.   

    select sum(nvl(sales,0)) from test where to_number(substr(to_char(id),1,4))=?
      

  3.   

    select sum(sales) from test where round(id/100) between 0 and 9999;
      

  4.   

    累加要用分析函数。
    select id,sales,sum(sales) over (order by id) "Running Total" from test order by id;
      

  5.   

    我试过了是不是这样
    create table cltest2(id number(8),sales number(10));insert into cltest2 values (111123,23.4);
    insert into cltest2 values (111125,20.4);
    insert into cltest2 values (111121,10);
    insert into cltest2 values (111021,10);SQL> select substr(to_char(id),1,4),sum(sales) from cltest2
      2  group by substr(to_char(id),1,4)
      3  /SUBSTR(TO_CHAR(ID),1,4) SUM(SALES)
    ----------------------- ----------
    1110                            10
    1111                            53
      

  6.   

    ToGo(ToGo) :哥们儿,你的WHERE怎么只有一半啊。
    blackest(卧松云) :哥们儿,你的结果是按ID号分的组。
    more_zou(小人物) :哥们儿,你只能算一组ID的前四位一样的统计值。
    BlueskyWide(谈趣者) :哥们儿,没有看懂您的意思。虚心请教中。。
    什么是分析函数啊?参经看过一次OVER的用法,好久没有用了忘记了,还望哥们儿讲讲,先谢了。
    clzzcl(倾城之恋) :wonderful!
      

  7.   

    试试这样
    select sum(nvl(sales,0)) from (select to_number(substr(to_char(id),1,4)) t,sales from test) tt group by t
      

  8.   

    select sum(c.sales)sales,c.id from (select sum(sales)sales,substr(id,1,4)id from test group by id) c group by c.id这样就ok