a1 = a1+b1+b2+c1+c2 = 5+3+0+0+3 = 11

解决方案 »

  1.   

    没人知道我就用两个sql查了
      

  2.   

    zhang@zhang>select sum(data1), sum(data2) from (
      2  select ts1.*, nvl(DATA1, 0) DATA1, nvl(DATA2, 0) DATA2 from ts1, data1 where ts1.NODEID=data1.N
    ODEID(+))
      3  start with PARENTID=0
      4  connect by prior NODEID=PARENTID;SUM(DATA1) SUM(DATA2)
    ---------- ----------
            11         13
      

  3.   

    不知道怎么把两个结果合到一起
    zhang@zhang>select sum(data1), sum(data2) from (
      2  select ts1.*, nvl(DATA1, 0) DATA1, nvl(DATA2, 0) DATA2 from ts1, data1 where ts1.NODEID=data1.N
    ODEID(+))
      3  start with PARENTID=0 and NODENAME='a2'
      4  connect by prior NODEID=PARENTID;SUM(DATA1) SUM(DATA2)
    ---------- ----------
             0          0zhang@zhang>select sum(data1), sum(data2) from (
      2  select ts1.*, nvl(DATA1, 0) DATA1, nvl(DATA2, 0) DATA2 from ts1, data1 where ts1.NODEID=data1.N
    ODEID(+))
      3  start with PARENTID=0 and NODENAME='a1'
      4  connect by prior NODEID=PARENTID;SUM(DATA1) SUM(DATA2)
    ---------- ----------
            11         13
      

  4.   

    比较土的方法zhang@zhang>select 1 nodeid, 'a1' nodename, sum(data1) data1, sum(data2) data2 from (
      2  select ts1.*, nvl(DATA1, 0) DATA1, nvl(DATA2, 0) DATA2 from ts1, data1 where ts1.NODEID=data1.N
    ODEID(+))
      3  start with PARENTID=0 and NODENAME='a1'
      4  connect by prior NODEID=PARENTID
      5  union
      6  select 1 nodeid, 'a2' nodename, sum(data1) data1, sum(data2) data2 from (
      7  select ts1.*, nvl(DATA1, 0) DATA1, nvl(DATA2, 0) DATA2 from ts1, data1 where ts1.NODEID=data1.N
    ODEID(+))
      8  start with PARENTID=0 and NODENAME='a2'
      9  connect by prior NODEID=PARENTID;    NODEID NO      DATA1      DATA2
    ---------- -- ---------- ----------
             1 a1         11         13
             1 a2          0          0