sql关联表查询--a表的列名是b表的内容
现有一个表 Test_Detail a(ID,1,2) 和 Test_Item b(ItemID,ItemName)
其中 a表中有数据
ID 1 2
00001 1000 2000
b表中有数据
ItemID ItemName
1 固定
2 变动
要怎么查询才能得到下面这样的结果呢?
ID 固定 变动
00001 1000 2000
请高手指点。
------解决方案--------------------create table Test_Detail_a(ID varchar(10),[1] int,[2] int)
create table Test_Item_b(ItemID int,ItemName varchar(20))
insert into Test_Detail_a
select '00001 ',1000,2000
insert into Test_Item_b
select 1, '固定 '
union all select 2, '变动 '
declare @sql varchar(2000)
set @sql = ' '
select @sql=@sql+ ', '+ '[ '+name+ '] as [ '+ItemName+ '] '
from (select a.name,b.ItemName
from syscolumns a,Test_Item_b b
where a.name=b.ItemID and id=object_id( 'Test_Detail_a ') and name <> 'ID ')t
exec( 'select ID '+@sql+ ' from Test_Detail_a ')
/*
ID 固定 变动
---------- ----------- -----------
00001 1000 2000
*/