我有一查询结果:
name  num
G1    10
G13    2
G2     3
L1     5
L2     4
M2     1我想对列的不同种类求和,最后显示形式G的单独求和,L M的一起求和name  num
G1    10
G13    2
G2     3
Sum1   15
L1     5
L2     4
M2     1
Sum2   5这种sql 怎样搞
rollup可以么

解决方案 »

  1.   

    先做下转换,取头个字母就行,然后用ROOLUP即可
      

  2.   

    测试数据:CREATE TABLE T92
    (
        NAME VARCHAR2(20),
        NUM NUMBER(4)
    );
    INSERT INTO T92 VALUES('G1', 10);
    INSERT INTO T92 VALUES('G13', 2);
    INSERT INTO T92 VALUES('G2', 3);
    INSERT INTO T92 VALUES('L1', 5);
    INSERT INTO T92 VALUES('L2', 4);
    INSERT INTO T92 VALUES('M2', 1);
    测试结果:
      

  3.   

    3#4#的方法可以,非常感谢如果我又多出一个列,还是求和
    loc  name  num
    A    G1    10 
    A    G13    2
    A    G2     3
    A    L1     5
    A    L2     4
    A    M2     1
    B    G1    15 
    B    G13    10
    B    G2     13
    B    L1     15
    B    L2     14
    B    M2     11求和结果
    loc  name  num
    A    G1    10 
    A    G13    2
    A    G2     3
    sum         15
    A    L1     5
    A    L2     4
    A    M2     1
    sum         10
    sum        25
    B    G1    15 
    B    G13   10
    B    G2    13
    sum        38 
    B    L1     15
    B    L2     14
    B    M2     11
    sum         40
    sum        78sum        103就是我多出了一列LOC,在原来求和方法的基础上最后一行要求所有LOC的列的和我改下了sql如下
    group by loc,rollup(decode(substr(name,1,1),'L','M','T','M',substr(name,1,1)),name)改写后只是实现了原来的功能,没有by loc来求和
      

  4.   

    LuiseRADL 大大,也在用有道词典
      

  5.   

    group by rollup(loc,decode(substr(name,1,1),'L','M','T','M',substr(name,1,1)),name)