15:36:26 SQL> select * from product;ID  NAME       PAR
--- ---------- ---
001 电子类     0
002 金属类     0
003 橡胶类     0
004 电子电容   001
005 电子电阻   001
006 有色金属   002
007 无色金属   002已选择7行。已用时间:  00: 00: 00.31
15:36:46 SQL> select * from consume;ID         NUM
--- ----------
004         50
005        125
006         39
007         12
003         88已用时间:  00: 00: 00.16
15:36:51 SQL> select
15:36:55   2    a.id,a.name,
15:36:55   3    (select sum(b.num) from consume b where id in
15:36:55   4    (select c.id from product c start with c.id=a.id connect by prio
r id=parent_id))  num
15:36:55   5  from product a where parent_id='0';ID  NAME              NUM
--- ---------- ----------
001 电子类            175
002 金属类             51
003 橡胶类             88已用时间:  00: 00: 00.16

解决方案 »

  1.   

    select parent_id,sum(num) from
    (select a.parent_id parent_id,b.num num 
    from consum b,product a
    where b.id=a.id)
    group by parent_id;
      

  2.   

    上面的表名写错了consum  应为consume
      

  3.   

    SELECT A.id, product .name, A.num
    FROM (SELECT (CASE WHEN dbo. product .parent_id = 0 THEN dbo. product .id ELSE dbo. product
                   .parent_id END) AS id, SUM(dbo.consume.num) AS num
            FROM dbo. product INNER JOIN
                  dbo.consume ON dbo. product .id = dbo.consume.id
            GROUP BY (CASE WHEN dbo. product .parent_id = 0 THEN dbo. product .id ELSE dbo.
                   product .parent_id END)) AS A LEFT JOIN
          product ON a.id = product .id
    就如此简单