SQL怎样将多个表的查询结果根据一个相同字段合并为一行?

sealocc 2011-08-18 07:22:34
SQLServer中有多个临时表,如何才能把多个临时表的数据合并成一行,例如:
临时表A
编号 数量A
0001 10
0002 15
0003 30
临时表B
编号 数量B
0002 100
0003 200
临时表C
编号 数量C
0003 33
想要得到的结果为:
0001 10 0 0
0002 15 100 0
0003 30 200 33




...全文
2494 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sealocc 2011-08-18
  • 打赏
  • 举报
回复
谢谢chuanzhang5687,你的第二个答案很好解决的我的问题,同时也感谢大家的支持和帮助!
勿勿 2011-08-18
  • 打赏
  • 举报
回复
select a.编号,isnull(数量A,0),isnull(数量B,0),isnull(数量C,0) from a,b,c where a.编号= b.编号 and a.编号 = c.编号
ggw128 2011-08-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 nonglizhi 的回复:]
需考虑 表B的数量比表A多。表C的数量比表B多....不然会丢失数据

SQL code



select t.编号,a.数量A,b.数量B,c.数量C from
(
select 编号 from 表a union
select 编号 from 表b union
select 编号 from 表c
) t
left join 表a a on t.编号=a.编号
lef……
[/Quote]

支持......
--小F-- 2011-08-18
  • 打赏
  • 举报
回复
select
a.编号,isnull(数量A,0),isnull(数量B,0),isnull(数量C,0)
from
a
left join
b
on
a.编号= b.编号
left join
c
on
a.编号 = c.编号
一缕青烟 2011-08-18
  • 打赏
  • 举报
回复
需考虑 表B的数量比表A多。表C的数量比表B多....不然会丢失数据


select t.编号,a.数量A,b.数量B,c.数量C from
(
select 编号 from 表a union
select 编号 from 表b union
select 编号 from 表c
) t
left join 表a a on t.编号=a.编号
left join 表b b on t.编号=b.编号
left join 表c c on t.编号=c.编号
chuanzhang5687 2011-08-18
  • 打赏
  • 举报
回复

--或者这样
select a.编号,isnull(数量A,0),isnull(数量B,0),isnull(数量C,0)
from a left join b on a.编号= b.编号
and left join c on and a.编号 = c.编号
chuanzhang5687 2011-08-18
  • 打赏
  • 举报
回复
select a.编号,isnull(数量A,0),isnull(数量B,0),isnull(数量C,0) 
from a,b,c
where a.编号= b.编号 and a.编号 = c.编号

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧