关于联表查询?
大师们,我有三张表:
表1
aaa1bbb1ccc1ddd1
A1
B1
C1
D1
E1
表2
aaa2bbb2ccc2ddd2
A2
B2
C2
D2
E2
表3
aaa3bbb3ccc3ddd3
A3
B3
C3
D3
E3
要实现把aaa2、aaa3的数据追加到aaa1上,其它表的列数据则累加字段,如下:
aaa1bbb1ccc1ddd1bbb2ccc2ddd2bbb3ccc4ddd5
A1
B1
C1
D1
E1
A2
B2
C2
D2
E2
A3
B3
C3
D3
E3
如何用sql语句实现哦?
[解决办法]
SELECT aaaa1 ,
bbb1 ,
ccc1 ,
ddd1 ,
bbb2 ,
ccc2 ,
ddd2 ,
bbb3 ,
ccc3 ,
ddd3
FROM ( SELECT aaaa1 ,
bbb1 ,
ccc1 ,
ddd1 ,
NULL bbb2 ,
NULL ccc2 ,
NULL ddd2 ,
NULL bbb3 ,
NULL ccc3 ,
NULL ddd3
FROM 表1
UNION ALL
SELECT aaaa2 ,
NULL ,
NULL ,
NULL ,
NULL ,
NULL ,
NULL ,
NULL ,
NULL ,
NULL
FROM 表2
UNION ALL
SELECT aaaa3 ,
NULL ,
NULL ,
NULL ,
NULL ,
NULL ,
NULL ,
NULL ,
NULL ,
NULL
FROM 表3
) a
[解决办法]
----------------------------
-- Author :TravyLee(物是人非事事休,欲语泪先流!)
-- Date :2012-11-22 10:56:13
-- Version:
-- Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
--Jul 9 2008 14:43:34
--Copyright (c) 1988-2008 Microsoft Corporation
--Developer Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
--
----------------------------
--> 测试数据:[表1]
if object_id('[表1]') is not null drop table [表1]
go
create table [表1]([aaa1] varchar(2),[bbb1] sql_variant,[ccc1] sql_variant,[ddd1] sql_variant)
insert [表1]
select 'A1',null,null,null union all
select 'B1',null,null,null union all
select 'C1',null,null,null union all
select 'D1',null,null,null union all
select 'E1',null,null,null
--> 测试数据:[表2]
if object_id('[表2]') is not null drop table [表2]
go
create table [表2]([aaa2] varchar(2),[bbb2] sql_variant,[ccc2] sql_variant,[ddd2] sql_variant)
insert [表2]
select 'A2',null,null,null union all
select 'B2',null,null,null union all
select 'C2',null,null,null union all
select 'D2',null,null,null union all
select 'E2',null,null,null
--> 测试数据:[表3]
if object_id('[表3]') is not null drop table [表3]
go
create table [表3]([aaa3] varchar(2),[bbb3] sql_variant,[ccc3] sql_variant,[ddd3] sql_variant)
insert [表3]
select 'A3',null,null,null union all
select 'B3',null,null,null union all
select 'C3',null,null,null union all
select 'D3',null,null,null union all
select 'E3',null,null,null
go
with t
as(
select [aaa1] from [表1]
union all
select [aaa2] from [表2]
union all
select [aaa3] from [表3]
)
select
distinct t.aaa1,a.bbb1,a.ccc1,a.ddd1,b.bbb2,b.ccc2,b.ddd2,c.bbb3,c.ccc3,c.ddd3
from
t,[表1] a ,[表2] b,[表3] c