sql语句如何实现将已经搜索到的Recordset,横向插入到令一个临时的表里.然后建一个job每隔两个小时导出成csv文件,文件名为yyyymmddhh.csv.  如:2007041421.csvselect * from table1得到的记录集为.
Name  Course  Grade刘三   maths       45
刘三   Chinese     39
刘三   English     56
王五   maths       77
王五   Chinese     89
王五   English     48插入到另一张临时表后为:Name   Maths   Chinese   English刘三    45       39        56
王五    77       89        48整个如何用语句来实现,关键是临时表的字段如何生成等等.
接着又如何用job来导出呢?非常紧急,如能解决,可以另外加分----

解决方案 »

  1.   

    行列转换的代码:
    declare @sql varchar(8000)
    set @sql=''
    select @sql=@sql+',sum(case course when '''+course+''' then grade else 0 end) as '''+course+'''' from (select distinct course from table1) t
    set @sql='select name'+@sql+' from table1 group by name'
    exec(@sql)
      

  2.   

    drop table table1
    go
    create table table1(name varchar(10),course varchar(10),grade int)
    insert into table1
    select '刘三','maths',45
    union select '刘三','Chinese',39
    union select '刘三','English',56
    union select '王五','maths',77
    union select '王五','Chinese',89
    union select '王五','English',48declare @sql varchar(8000)
    set @sql=''
    select @sql=@sql+',sum(case when course='''+course+''' then grade else 0 end) as '''+course+''''
    from (select distinct course from table1)t
    exec('select name'+@sql+' from table1 group by name')
    /*
    name       Chinese     English     maths       
    ---------- ----------- ----------- ----------- 
    刘三         39          56          45
    王五         89          48          77
    */
      

  3.   

    declare @sql varchar(4000)
    set @sql=''
    select @sql=@sql+','+quotename(course)+'=max(case course when '
    +quotename(course,'''')+' then grade else 0 end)'
    from table1
    group by name
    set @sql='select Name'+@sql+'into #
     from table1 group by name'
    print @sql--显示语句复制执行就行了
      

  4.   

    临时表查询
    select * from #
      

  5.   

    http://community.csdn.net/Expert/topic/5496/5496112.xml?temp=.198208
      

  6.   

    Declare @cols nvarchar(max);WITH CTECourse(Course)
    As
    (
    Select Distinct Course From table1
    )Select @cols = IsNull(@cols + ',[','[') + Course + ']' From CTECourseDECLARE @sql AS nvarchar(MAX)
    SET @sql = N'SELECT *
    FROM (SELECT [Name], [Course], [Grade]
          FROM table1) as Header
      PIVOT(SUM([Grade]) FOR [Course] IN(' + @cols + N')) AS Piv'EXEC sp_executesql @sql
      

  7.   

    create proc job_SHZSJ
    as 
    declare @strSql varchar(1000)
    set @strSql='select [name],'
    select @strSql=@strSql +'sum(case when course='''+course+''' then grade end) as ['+course+'],'  from (select distinct course from table1) a
    set @strSql=substring(@strSql,1,len(@strSql)-1)
    set @strSql=@strSql+' from table1 group by name '
    exec(@strsql)