这样:(假设你的表名为table1,固定的字段为id,name) declare @fields varchar(4000) declare @field varchar(50)DECLARE Fields_Cursor CURSOR FOR select syscolumns.name from syscolumns inner join sysobjects on syscolumns.id=sysobjects.id where sysobjects.name='table1' and syscolumns.name not in ('id','name') --返回所有你动态生成的字段名OPEN Fields_CursorFETCH NEXT FROM Fields_Cursor into @field if @@FETCH_STATUS = 0 begin select @fields=@field+','
WHILE @@FETCH_STATUS = 0 BEGIN FETCH NEXT FROM Fields_Cursor into @field if @@FETCH_STATUS<>0 break select @fields=@fields+@field+',' END endCLOSE Fields_Cursor DEALLOCATE Fields_Cursorif len(@fields)>0 begin select @fields=left(@fields,len(@fields)-1) declare @sql nvarchar(4000) set @sql='select '+@fields+' from table1'
{
print>>>
}
declare @fields varchar(4000)
declare @field varchar(50)DECLARE Fields_Cursor CURSOR FOR
select syscolumns.name from syscolumns
inner join sysobjects
on syscolumns.id=sysobjects.id
where sysobjects.name='table1'
and syscolumns.name not in ('id','name') --返回所有你动态生成的字段名OPEN Fields_CursorFETCH NEXT FROM Fields_Cursor into @field
if @@FETCH_STATUS = 0
begin
select @fields=@field+','
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM Fields_Cursor into @field
if @@FETCH_STATUS<>0 break
select @fields=@fields+@field+','
END
endCLOSE Fields_Cursor
DEALLOCATE Fields_Cursorif len(@fields)>0
begin
select @fields=left(@fields,len(@fields)-1)
declare @sql nvarchar(4000)
set @sql='select '+@fields+' from table1'
EXEC sp_executesql @sql
end