declare @a varchar(8000)
set @a=''
select @a=@a+','+name from (select top 100 percent name from  syscolumns where id=object_id('表') order by case colorder when 20 then 00 when 27 then 01 else colorder end ) a
set @a='select '+stuff(@a,1,1,'')+' from 表'
exec(@a)

解决方案 »

  1.   

    我刚学sql,看不明白语句,象有点复杂。有没有能给详细说明一下各语句的意思
      

  2.   

    select @a=@a+','+name from (select top 100 percent name from  syscolumns where id=object_id('表') order by case colorder when 20 then 00 when 27 then 01 else colorder end ) a
    ---这条语句怎么会产生,COL1,CLOOL2,COL3,...的效果的呢能否说明下
      

  3.   


    “回复人: xueguang(xg) ”的 答案 实在是 太爽了,经典啊,很有欣赏价值!
      

  4.   

    select @a=@a+','+name from (select top 100 percent name from  syscolumns where id=object_id('表') order by case colorder when 20 then 00 when 27 then 01 else colorder end ) a
    ---这条语句怎么会产生,COL1,CLOOL2,COL3,...的效果的呢能否说明下这句相当于一个循环赋值的语句,每查出一行,@a就会增加一个值,加top 100 percent是因为有order by的子查询必须要指定top,case后面的语句就是为了决定列的顺序用的.