test表中有这两个字段stoveid和product
stoveid是炉号的格式是 1#001,1#002,1#003。。2#001,2#002,2#003......n#001,n#002,n#003
product是对应炉号的产量我要把1#炉,2#炉,。。n号炉的产量查询出来select sum(product)
from test
where 条件
group by stoveid这么写的话是按炉号分组,怎么才能按照炉号为1#开头,2#开头,。n号开头的规则分组呢?
也就是说 1#001,1#002,1#003 不分成3个组,要合成一个。

解决方案 »

  1.   

    SELECT  SUBSTR (stoveid, 1, INSTR (stoveid, '#')) stoveid,  SUM (product)
        FROM TEST
       WHERE 条件
    GROUP BY SUBSTR (stoveid, 1, INSTR (stoveid, '#'))
      

  2.   

    select sum(product)
    from test
    where 条件
    group by substr(stoveid,1,pos(stoveid,'#') - 1)
      

  3.   


    汗,发现偶代码写错了,oracle貌似没有pos函数,把pos换成instr就可以了。
      

  4.   

    适当使用SQL中提供的函数对字段进行必要的处理即可。
    下面是我的机器上的模拟的结果: