主从表
主表
id  num
1   5
从表
parid  dep  num
1       a1   2
1       a2   2
1       a3   1

解决方案 »

  1.   

    在你得到
    ID  NUM  a1num  a2num  a3num
    1    5    2      0       0
    1    5    0      2       0
    1    5    0      0       1
    的基礎上
    select id,num,sum(a1num)a2num,sum(a2num)a2num,sum(a3num)a3num
    from yourGetTable;
    group by id,num
    或者使用max,min什么的代替sum。
      

  2.   

    主表中有许多字段,我只是举了个例子,我用group by 时告诉我不是有效的group by 子句,请问一个初级的问题,什么样的列才能作为group by 表达式中的列?
      

  3.   

    group by 子句中的列是在这张表中能唯一区别行的列或列组合,如果你的主表中有许多字段,如果你不需要很多,则就是这几列,如果很多,则全要列上,这是我理解的不知对不对,:)还望后来者给予指点。在你的问题里,你用以下方法:
    1、建立一个过渡视图,就是你现在的这个
    2、在这个视图基础上在建一个视图,
    select id,num,sum(a1num) as a1num,sum(a2num)as a2num  from v1 group by id,num
      

  4.   

    主表a(id,num)
    从表b(parid,dep,num)
    select a.id,a.num,sum(decode(b.dep,'a1',b.num)) a1num,sum(decode(b.dep,a2,b.num)) a2num,sum(decode(b.dep,'a3',b.num)) a3num
    from a,b 
    where a.id=b.parid(+)
    group by a.id,a.num