2011-02-11 17 views
0

データの行が1つのテーブルを持っている場合はどのように変換してデータを取得するのですか?私は不明な列の名前、ID、データを取得する

name colid value 
item1  1 101 
item2  2 102 
item3  3 103 
item4  4 104 
... 
itemn  n  n 

のようなものが似たような答え@dzibulが、欠けている部分がデータを取得する方法である???を取得するにはどうすればよい

item1 item2 item3 item4... itemn 
    101 102 103 104...  n 

select name, colorder from syscolumns where id = (select id from sysobjects where name = [tablename]) 

答えて

0

これを実現するには、動的SQLが必要です。

ワーキングサンプル

create table onerowdata(item1 int, item2 int, item3 int, dt datetime, itemn varchar(100)); 
insert onerowdata select 101, 102, 103, getdate(), 'TEST DATA'; 

declare @tbl sysname set @tbl = 'onerowdata' 
declare @sql nvarchar(max) 
select @sql = isnull(@sql+' union all ','') 
    + 'select ' 
    + quotename(column_name, '''') + ' name,' 
    + RIGHT(ORDINAL_POSITION,12) + ' colid,' 
    + 'convert(varchar(max),' + quotename(column_name) + ') value' 
    + ' from ' + quotename(@tbl) 
from INFORMATION_SCHEMA.COLUMNS 
where TABLE_NAME = @tbl 
order by ORDINAL_POSITION 
select @sql = @sql + ' order by 2' 
--print @sql 
exec (@sql) 
関連する問題