我做了两个视图表,比如A B两个表,里面都有ks,xm,mc,sl,dj,sl*dj
我用UNION ALL
select ks,xm,mc,sum(s),dj,sum(a)
from
(select ks,xm,mc,sum(sl) s,dj,sum(je) a from A group ks,xm,mc,dj
union all
select ks,xm,mc,sum(sl) s,dj,sum(je) a from B group ks,xm,mc,dj) 
group by ks,xm,mc,dj
这样其中sum(s)和SUM(a)会得到下面两个SUM(SL)和sum(je)的相加的数额
但是我想在这个最后查询输出中,增加两个就是分别有A表和B表里sum(sl)一栏
最后输出列有 ks,xm,mc,sum(sl)A表,sum(sl)B表,SUM(SL)A表+B表,dj,sum(je) A表+B表
我怎么也用不起来,请问下这里告诉我应该如何做,谢谢

解决方案 »

  1.   


    --也没表,自已试下
    select A.ks,A.xm,A.mc,
    nvl(sum(A.s1),0) as1,
    nvl(sum(B.s1),0) bs1,
    nvl(sum(A.s1),0)+nvl(sum(B.s1),0) sl,
    A.dj,
    nvl(sum(A.je),0 aj1,
    nvl(sum(B.je),0) bj1,
    nvl(sum(A.je),0)+nvl(sum(B.je),0) dj,
    from A full join B
    on A.ks=B.ks and A.xm=B.xm and A.mc=B.mc and A.dj=B.dj
    group by A.ks,A.xm,A.mc,A.dj
      

  2.   


    nvl(sum(A.je),0)+nvl(sum(B.je),0) dj,--逗号去掉
      

  3.   

    不好意思,最后算出来数量还是明显不对,ASL BSL都比原来一张表里数量多很多了
      

  4.   

    在group by中再加入
    B.ks,B.xm,B.mc,B.dj
    是什么结果?
      

  5.   

    a表group后ks,xm,mc是多条的
    b表group后ks,xm,mc是多条的
    group是分类总数,不是总总数,你想把A通过group变成求总数是不可能的,同理B也是不可能的,
    如果真想在末尾再加个A的总数和B的总数,那么ks,xm,mc肯定是不确定的,建议就用“A”代替,同理B的就用“B”来代替那三个字段,然后在现有的查询最外面再union这两条记录