主表:
ITEMCODE  ITEMDES
1010      笔
101001    圆珠笔
101002    铅笔
101003    钢笔子表:
ITEMCODE  ITEMUSED USEDTIME
101001     2       2007-02-05
101001     4       2007-02-09
101002     3       2007-02-08
101003     7       2007-02-04要生成的累计表:
ITEMCODE  ITEMDES  ITEMUSED
1010      笔        16
101001    圆珠笔    6
101002    铅笔      3
101003    钢笔      7累计表要实时生成,该怎么做?

解决方案 »

  1.   

    select a.ITEMCODE ,a.ITEMDES , sum(b.ITEMUSED)
    from 主表 a left outter join 子表 b
    on a.ITEMCODE=b.ITEMCODE
    group by a.ITEMCODE
    手边没环境,大概的意思这样,实施的话就做成view。
      

  2.   

    我测试成功的,你试试看~~~=========================sql==================================select distinct
           t1.ITEMCODE,
           t1.ITEMDES,
           nvl(sum(t2.ITEMUSED) over(partition by t1.ITEMCODE,t1.ITEMDES),sum(t2.ITEMUSED) over(partition by decode(length(t1.ITEMCODE),4,t1.ITEMCODE,substr(t1.ITEMCODE,1,length(t1.ITEMCODE)-2))))
      from (
            select '1010' as ITEMCODE,'bi' as ITEMDES from dual
            union all
            select '101001' as ITEMCODE,'yuanzibi' as ITEMDES from dual
            union all
            select '101002' as ITEMCODE,'qianbi' as ITEMDES from dual
            union all
            select '101003' as ITEMCODE,'gangbi' as ITEMDES from dual
           )t1,
           (
            select '101001' as ITEMCODE,2 as ITEMUSED,'2007-02-05' as USEDTIME from dual
            union all
            select '101001' as ITEMCODE,4 as ITEMUSED,'2007-02-09' as USEDTIME from dual
            union all
            select '101002' as ITEMCODE,3 as ITEMUSED,'2007-02-08' as USEDTIME from dual
            union all
            select '101003' as ITEMCODE,7 as ITEMUSED,'2007-02-04' as USEDTIME from dual
           )t2
     where t1.ITEMCODE = t2.ITEMCODE(+);
     ============================result=================================
    ITEMCODE ITEMDES  NVL(SUM(T2.ITEMUSED)OVER(PARTI
    -------- -------- ------------------------------
    1010     bi                                   16
    101001   yuanzibi                              6
    101002   qianbi                                3
    101003   gangbi                                7
      

  3.   

    select a.itemcode,a.itemdes,sum(b.itemused)
    from a left outer join 
    b on b.itemcode like a.itemcode||'%'
    group by a.itemcode,a.itemdes;
      

  4.   

    如一楼所言,创建一个视图就可以得到实时结果;视图详细内容语句如上面所述。
    select a.itemcode,a.itemdes,sum(b.itemused)
    from a left outer join 
    b on b.itemcode like a.itemcode||'%'
    group by a.itemcode,a.itemdes;