日期:2014-05-19  浏览次数:20538 次

超麻烦的问题 查询汇总的问题 急
现在有两张表   数据如
  tab1
    id         shuliang
    001         15
    001         15
    002         22
    002         10
    003         10
    003         2
    003         2
    006         2
    007         20

tab2  
    id       shuliang
    001         12
    001         12    
    002         12
    002         13
    004         45
    005         20

想得到如下的结果
    id         shuliang
    001         54
    002         57
    003         14
    004         45
    005         20
    006         2
    007         20
   


------解决方案--------------------
select id,sum(shuliang) shuliang
from (
select * from tab1
union all
select * from tab2
)a
group by id
------解决方案--------------------
select t.id,sum(t.shuliang) as shuliang from (select * from tab1 union all select * from tab2) t group by t.id
------解决方案--------------------
create table tb1(spid char(3),shuliang int)
create table tb2(spid char(3),shuliang int)
insert into tb1 values( '001 ',15)
insert into tb1 values( '001 ',15)
insert into tb1 values( '002 ',22)
insert into tb1 values( '002 ',10)
insert into tb1 values( '003 ',10)
insert into tb1 values( '003 ',2)
insert into tb1 values( '003 ',2)
insert into tb1 values( '006 ',2)
insert into tb1 values( '007 ',20)

insert into tb2 values( '002 ',12)
insert into tb2 values( '002 ',13)
insert into tb2 values( '001 ',12)
insert into tb2 values( '001 ',12)
insert into tb2 values( '004 ',45)
insert into tb2 values( '005 ',20)

Select
IsNull(A.spid, B.spid) As spid,
IsNull(A.shuliang, 0) + IsNull(B.shuliang, 0) As shuliang
From
(Select spid, SUM(shuliang) As shuliang From tb1 Group By spid) A
Full Join
(Select spid, SUM(shuliang) As shuliang From tb2 Group By spid) B
On A.spid = B.spid

Drop Table tb1, tb2
--Result
/*
spid shuliang
001 54
002 57
003 14
004 45
005 20
006 2
007 20

*/
------解决方案--------------------
create table tb1(spid char(3),shuliang int)
create table tb2(spid char(3),shuliang int)
insert into tb1 values( '001 ',15)
insert into tb1 values( '002 ',22)
insert into tb1 values( '015 ',10)
insert into tb1 values( '003 ',2)
insert into tb1 values( '006 ',2)