专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Sql Server

sql 多张表的列合并成一条数据,该怎么解决

发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
sql 多张表的列合并成一条数据
比如
A表 有下列
name  stock(库存) 
苹果   10
香蕉   20

B表
name  import(入库)
苹果  5
苹果  10
香蕉  20

C表
name  delivery(出库)
苹果  5

最后查出的结果要这样
name(名称) stock(库存)  import(入库)  delivery(出库)
苹果        10           15               5
香蕉        20           20               0

请问这样的话sql语句要怎么写啊?
sql 多张表合并列

------解决方案--------------------
SELECT NAME,SUM(stock)stock,SUM(import) import,SUM(delivery) delivery
FROM (
SELECT a.NAME,SUM(ISNULL(stock,0)) stock,0 import,0 delivery
FROM a
GROUP BY NAME
UNION ALL 
SELECT b.NAME,0 stock,SUM(ISNULL(import,0)) import,0 delivery
FROM b
GROUP BY NAME
UNION ALL 
SELECT c.NAME,0 stock,0 import,SUM(ISNULL(delivery,0)) delivery
FROM c
GROUP BY NAME
)a
GROUP BY name

------解决方案--------------------


with pro_name as 
(
select name from A表 union 
select name from B表 union
select name from C表 
)
select * from  pro_name  left join A on pro_name.name = A.name 
                         left join  B on pro_name.name = B.name 
                         left join  C on pro_name.name = C.name 


------解决方案--------------------
select a.name,isnull(a.stock,0) stock,isnull(b.import,0) import,isnull(c.delivery,0) delivery from
(select name,sum(isnull(stock,0)) stock from a group by name) a left join
(select name,sum(isnull(import,0)) import from b group by name) b on a.name=b.name left join 
(select name,sum(isnull(delivery,0)) delivery from c group by name) c on b.name=c.name
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: