日期:2014-05-18  浏览次数:20366 次

如用SQL语句进行多表关联汇总
A表  
  ID   名称   
  1 c  
  2    d      
  3    e     
  4    f     
   
  B表  
  ID 名称 数量  
  1 c 1  
  2 d 1  
  3 e 1  
  4 e 1  
  5 f 2  
   
  C表  
  ID 名称 数量  
  1 a 1  
  2 c 1  
  3 e 1  
  4 e 1  
  5 f 2
  1 a 1  
  2 c 1  
  3 e 1  
  4 e 1  
  5 f 2

返回
  名称 A表总数量 c表总数量
  c 1 2
  d 1 0
  e 2 4
  f 2 2
如何用SQL语句达到目标

------解决方案--------------------
SQL code
select a.名称,sum(a.数量) as A表总数量,isnull(sum(c.数量),0) as c表总数量
from a left join c on a.名称=c.名称

------解决方案--------------------
SQL code
select
  a.名称,
  isnull(b.数量,0) B表总数量,
  isnull(c.数量,0) C表总数量
from 
  A
left join
  (select 名称,sum(数量) as 数量 from B group by 名称) b
on
  a.名称=b.名称
left join 
  (select 名称,sum(数量) as 数量 from C group by 名称) c
on
  a.名称=c.名称

------解决方案--------------------
select 名称,
sum( bnum ) as b表总数量,
sum( cnum ) as c表总数量
from (
select a.名称, isnull(b.数量, 0) as bnum, isnull(c.数量, 0 ) as cnum 
from a left jion b on b.名称 = a.名称
left jion c on c.名称 = a.名称 ) temp_t
group by 名称