先看一下例子,我的问题在后面呢。------- ----------- ----------- ----------- ----------- -----------
Student 数学          物理          英语          语文          总成绩
------- ----------- ----------- ----------- ----------- -----------
李四      77          85          65          65          292
张三      87          90          82          78          337(2 行受影响)
*/go--2、列转行
--> --> (Roy)生成測試數據
 
if not object_id('Class') is null
    drop table Class
Go
Create table Class([Student] nvarchar(2),[数学] int,[物理] int,[英语] int,[语文] int)
Insert Class
select N'李四',77,85,65,65 union all
select N'张三',87,90,82,78
Go--2000:动态:declare @s nvarchar(4000)
select @s=isnull(@s+' union all ','')+'select [Student],[Course]='+quotename(Name,'''')--isnull(@s+' union all ','') 去掉字符串@s中第一个union all
+',[Score]='+quotename(Name)+' from Class'
from syscolumns where ID=object_id('Class') and Name not in('Student')--排除不转换的列
order by Colid
exec('select * from ('+@s+')t order by [Student],[Course]')--增加一个排序
------- ----------- ----------- ----------- ----------- -----------
我想把上面‘动态:’所查询出来的结果写进一个临时表,应该怎么写?
我以为用 select * into #one   可是不行,请帮帮忙啊。
declare @s nvarchar(4000)
select @s=isnull(@s+' union all ','')+'select [Student],[Course]='+quotename(Name,'''')--isnull(@s+' union all ','') 去掉字符串@s中第一个union all
+',[Score]='+quotename(Name)+' from Class'
from syscolumns where ID=object_id('Class') and Name not in('Student')--排除不转换的列
order by Colid
exec('select * from ('+@s+')t order by [Student],[Course]')--增加一个排序

解决方案 »

  1.   

    用全局临时表 加两个#,##one
      

  2.   


    declare @s nvarchar(4000) 
    select @s=isnull(@s+' union all ','')+'select [Student],[Course]='+quotename(Name,'''')--isnull(@s+' union all ','') 去掉字符串@s中第一个union all 
    +',[Score]='+quotename(Name)+' from Class' 
    from syscolumns where ID=object_id('Class') and Name not in('Student')--排除不转换的列 
    order by Colid 
    exec('select * into ##ls1 from ('+@s+')t order by [Student],[Course]')--增加一个排序select * from ##ls1李四 数学 77
    李四 物理 85
    李四 英语 65
    李四 语文 65
    张三 数学 87
    张三 物理 90
    张三 英语 82
    张三 语文 78
      

  3.   

    用全局临时表 加两个#,##one   也不行啊