首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

关于联表查询?解决办法

2013-01-08 
关于联表查询?大师们,我有三张表:表1aaa1bbb1ccc1ddd1A1B1C1D1E1表2aaa2bbb2ccc2ddd2A2B2C2D2E2表3aaa3bbb

关于联表查询?
大师们,我有三张表:
表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

热点排行