读书人

SQL:怎样将多个表的查询结果放到一张表

发布时间: 2012-04-17 15:06:33 作者: rapoo

SQL:怎样将多个表的查询结果放到一张表里?
思路是这样的:
现在有A表,B表,C表:
A:
a01 a02
--------
1 11
2 22

B:
b01 b02
--------
10 101
20 201

C表:
c01 c02
--------
A xx
B xx

现要想取得表A和表B(表A和表B的表名来自表C查询出来的第一个c01字段)中的前两个字段的数据即a01,a02;b01,b02字段并融合成一张表tmp里,如下显示:
tmp
t01 t02
--------
a01 a02
b01 b02




[解决办法]
没明白意思
[解决办法]

SQL code
declare @firstTable nvarchar(10);select top(1) @firstTable=c01 from (select top(2) c01 from C order by c01 asc) as c1;declare @secondTable nvarchar(10);select top(1) @secondTable=c01 from (select top(2) * from C order by c01 desc)as c2;exec('select top(2) a01 as t01,a02 as t02 from '+ @firstTable+' union '+' select top(2) * from '+@secondTable);
[解决办法]
SQL code
if object_id('A') is not null    drop table A;goif object_id('B') is not null    drop table B;goif object_id('C') is not null    drop table C;if object_id('temp') is not null    drop table temp;go--创建测试表create table A(    a01 int,    a02 int);gocreate table B(    b01 int,    b02 int);gocreate table C(    c01 nvarchar(10),    c02 nvarchar(10));go--插入测试数据insert into Aselect 1, 11 union allselect 2, 22;goinsert into Bselect 10, 101 union allselect 20, 201;goinsert into Cselect 'A', 'xx' union allselect 'B', 'xx';go--生成动态查询语句declare @sql nvarchar(max);set @sql = '';declare @table_name nvarchar(10);declare @i int;set @i = 0;declare cur_c cursor for    select c01 from C;open cur_c;fetch next from cur_c into @table_name;while @@fetch_status = 0begin    if @i = 0        set @sql = @sql + 'select * into temp from ' + @table_name;    else        set @sql = @sql + ' union all select * from ' + @table_name;    set @i = @i + 1;    fetch next from cur_c into @table_name;end;close cur_c;deallocate cur_c;--执行动态查询语句exec (@sql);go--检查结果select *from temp;go/*a01         a02----------- -----------1           112           2210          10120          201*/ 

读书人网 >SQL Server

热点推荐