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

求组合表的sql语句
表a和b,结构一样,a内有列“名称”和“数量1”,b内有列“名称”和“数量2”,求将表a和表b组成表c(表c中有列“名称”、“数量1”和数量2),结果如下:
表a
名称 数量1
篮球 2
足球 3
羽毛球 1

表b
名称 数量2
篮球 4
足球 4
乒乓球 2

将以上两个表组合后为
表c
名称 数量1 数量2
篮球 2 4
足球 3 4
羽毛球 1 0
乒乓球 0 2

请问实现以上组合功能的sql语句如何写?



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

--> 测试数据:[表a]
if object_id('[表a]') is not null drop table [表a]
create table [表a]([名称] varchar(6),[数量1] int)
insert [表a]
select '篮球',2 union all
select '足球',3 union all
select '羽毛球',1
--> 测试数据:[表b]
if object_id('[表b]') is not null drop table [表b]
create table [表b]([名称] varchar(6),[数量2] int)
insert [表b]
select '篮球',4 union all
select '足球',4 union all
select '乒乓球',2

select isnull(a.名称,b.名称) as 名称,
isnull(a.数量1,0) 数量1,isnull(b.数量2,0) as 数量2 from [表a] a 
full join [表b] b on a.名称=b.名称
/*
名称    数量1    数量2
篮球    2    4
足球    3    4
羽毛球    1    0
乒乓球    0    2
*/