日期:2014-05-17  浏览次数:21152 次

再问一个union中SUM相加的问题
三张表用union all和SUM相加,比如有a b c三表,每个表里都查询出ID MC SL 例如
a表
ID MC SL
100 苹果 1
101 梨子 3
b表
ID MC SL
100 苹果 4
101 梨子 2
c表  
100 苹果 2
101 梨子 2
用下面语句
select id,mc,sum(s)
from
(select id,mc,sl s from a
union all
select id,mc,sl s from b
union all
select id,mc,sl s from b)
这样就可以得到 他们苹果 梨子这些相加的总数
ID MC SL
100 苹果 7
101 梨子 7

但是我现在想得出这样一个结果,就是得出结果中增加有a表和b表 SL的相加 以及c表的SL,就是如下结果
ID MC SUM(SL(a表+b表结果)) SUM(SL(c表结果)) SUM(sl(总的数量结果))
100 苹果 5 2 7
101 梨子 5 2 7
谢谢大家,大概就是这个意思,有知道告诉下我

------解决方案--------------------
SQL code

create table a (id number(5),mc varchar2(10),sl number(5));
insert into a values (100,'苹果',1);
insert into a values (101,'梨子',3);

create table b (id number(5),mc varchar2(10),sl number(5));
insert into b values (100,'苹果',4);
insert into b values (101,'梨子',2);

create table c (id number(5),mc varchar2(10),sl number(5));
insert into c values (100,'苹果',2);
insert into c values (101,'梨子',2);
commit;

select a.id,a.mc,sum(a.sl+b.sl) s1,sum(c.sl) s2,sum(a.sl+b.sl+c.sl) s3
from a,b,c
where a.id=b.id and a.id=c.id
group by a.id,a.mc
order by a.id

     id     mc    s1    s2    s3
----------------------------------------------
1    100    苹果    5    2    7
2    101    梨子    5    2    7