统计各单位自己的收入情况,以收入项目进行逐级分类统计
表1:A
主键chr_id;单位字段为 eid表2: B
主键chr_id;main_id(A表主键);项目字段为 iid (三位一级,例如001一级,001001一级);  金额字段 moneyA B 表关系   A.chr_id = B.main_id好象有个分析函数的。好久不写忘了怎么写了。谢谢!

解决方案 »

  1.   

    应该是类似这样的sql吧
    create table a (chr_id varchar2(100),eid varchar2(100));
    insert into a values('1','aa');
    insert into a values('2','bb');
    /
    create table b(chr_id varchar2(100),main_id varchar2(100),iid varchar2(100),money number);
    insert into b values('1','1','001',100);
    insert into b values('1','1','001001',100);--执行查询
    select decode(a.eid,null,'总计',eid),decode(iid,null,'小记',iid),sum(money) from a 
    inner join b on a.chr_id=b.main_id
    group by rollup(eid,iid)
    --Result
    1 aa 001 300
    2 aa 001001 411
    3 aa 小记 711
    4 总计 小记 711
      

  2.   

    没考虑级次啊 其实我已经写好了:
    select substr(iid,1,3),substr(iid,1,6),...,sum(b.chargemoney) summoney
    from untax_collection a,untax_collectiondetail b 
    where a.chr_id = b.main_id
    group by rollup(substr(b.iid,1,3),substr(b.iid,1,6),...)只是能不能 把“substr(iid,1,3),substr(iid,1,6),...,”写成动态的。在一个SQL里面。