如果我有一行包含一行数据,我怎么样'转换它并获取它拥有的数据?
item1 item2 item3 item4... itemn
101 102 103 104... n
我如何获得类似
的内容name colid value
item1 1 101
item2 2 102
item3 3 103
item4 4 104
...
itemn n n
@dzibul回答类似的问题,但缺少的部分是如何检索数据???
select name, colorder from syscolumns where id = (select id from sysobjects where name = [tablename])
答案 0 :(得分: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)