如下:
table Aid    name classid age add          type         money
1     张三  1      10   北京市       1              2
2     李四  1      11   河北         2              1
3     张五  2      12   河南         1              1
4     李六  1      11   河北         1              10
5     张三  1      10   北京市       2              2
6     李四  1      11   河北         1              10
7     张三  1      10   北京市       2              6
classid name
1  1班
2  2班
3  3班type
1   一级积分
2   二级积分
结果:
id      name     classid        age add  level1    level2
1       张三     1               10  北京市 2          8
2       李四     1               11  河北  10          1
3       李六     1               11  河北  10          0如上:从A表中查询得到1班的所有人的数据,如果级别相同的数据有多个,那么级别上的money字段值相加和,如果没有就为0,type 就两种:1与2

解决方案 »

  1.   

    用group by做统计能做到么?
      

  2.   

    select id,name,classid,age,add,
    sum(case type when 1 then money else 0 end) level1,
    sum(case type when 2 then money else 0 end) level2
    from A
    group by name;
      

  3.   

    忘了加一班了,where classid='1'
      

  4.   

    select id,name,classid,age,add,
    sum(case type when 1 then money else 0 end) level1,
    sum(case type when 2 then money else 0 end) level2
    from A
    where classid='1'
    group by name;
      

  5.   

    明显的楼上,
    name,classid,age,add,
    这些不在group中,你这样写是错误的吧?
      

  6.   

    哦,忘了,用max就好了,反正这些肯定都一样
      

  7.   

    结果: 
    id      name    classid        age add  level1    level2 
    1      张三    1              10  北京市 2          8 
    2      李四    1              11  河北  10          1 
    3      李六    1              11  河北  10          0 level1    level2 看不出来什么规律
      

  8.   

    select name,classid,age,addl,sum(level1) level1,sum(level2) level2
    from(
    select a.id,a.name,a.classid,a.age,a.addl,a.type,decode(a.type,1,money,0) level1, decode(a.type,2,money,0) level2 from ta a,tclass b,ttype c
    where a.classid=b.id
    and a.type=c.id)
    where classid=1
    group by name,classid,age,addl 
      

  9.   

    create table ta(id integer,name varchar2(20),classid int,age int,addl varchar2(10),type int,money number(8,2));insert into ta values(1,   '张三',  1,      10,  '北京市',      1,              2); 
    insert into ta values(2,   '李四',  1,      11,  '河北',      2,              1); 
    insert into ta values(3,   '张五',  2,      12,  '河南',      1,              1); 
    insert into ta values(4,   '李六',  1,      11,  '河北',      1,              10); 
    insert into ta values(5,   '张三',  1,      10,  '北京市',      2,              2); 
    insert into ta values(6,   '李四',  1,      11,  '河北',      1,              10); 
    insert into ta values(7,   '张三',  1,      10,  '北京市',      2,              6); create table tclass(id int,name varchar2(10));
    insert into tclass values(1,'1班');
    insert into tclass values(2,'2班');
    insert into tclass values(3,'3班');create table ttype(id integer,type varchar2(10));
    insert into ttype values(1,'一级积分');
    insert into ttype values(2,'二级积分');
      

  10.   

    结果:
    select name,classid,age,addl,sum(level1) level1,sum(level2) level2
    from(
    select a.id,a.name,a.classid,a.age,a.addl,a.type,decode(a.type,1,money,0) level1, decode(a.type,2,money,0) level2 from ta a,tclass b,ttype c
    where a.classid=b.id
    and a.type=c.id)
    where classid=1
    group by name,classid,age,addl 
    order by name desc1 张三 1 10 北京市 2 8
    2 李四 1 11 河北 10 1
    3 李六 1 11 河北 10 0