sjx                   sgyxm     fresult
A453B                   标准干定量   3.5
A453B                   公定回潮率   3
A453B                   设计捻系数   4
A453B                   实际总牵伸   0
A453B                总牵伸效率   0
各位高手,谁能用sql语句给进行行列转换如下:上表行数不固定,奕转换后的列数不固定sjx, 标准干定量,公定回潮率,设计捻系数,实际总牵伸,总牵伸效率
     
A453B     3.5          3           4        0           0

解决方案 »

  1.   

    http://community.csdn.net/Expert/topic/2767/2767759.xml?temp=.7057306
      

  2.   

    测试--测试数据
    create table 表1(姓名 varchar(10),数学 int,物理 int,语文 int)
    insert 表1 select '张三',50,60,70
    union all  select '李四',80,62,83
    union all  select '王五',90,85,77
    go--查询处理
    declare @s1 varchar(8000),@s2 varchar(8000)
    ,@s3 varchar(8000),@s4 varchar(8000),@s5 varchar(8000)
    ,@i varchar(10)
    select @s1='',@s2='',@s3='',@s4='',@s5='',@i='0'
    select @s1=@s1+',@'+@i+' varchar(8000)'
    ,@s2=@s2+',@'+@i+'=''项目='''''+name+''''''''
    ,@s3=@s3+'
    select @'+@i+'=@'+@i+'+'',[''+[姓名]+'']=''+cast(['+name+'] as varchar) from 表1'
    ,@s4=@s4+',@'+@i+'=''select ''+@'+@i
    ,@s5=@s5+'+'' union all ''+@'+@i
    ,@i=cast(@i as int)+1
    from syscolumns 
    where object_id('表1')=id and name<>'姓名'select @s1=substring(@s1,2,8000)
    ,@s2=substring(@s2,2,8000)
    ,@s4=substring(@s4,2,8000)
    ,@s5=substring(@s5,16,8000)exec('declare '+@s1+'
    select '+@s2+@s3+'
    select '+@s4+'
    exec('+@s5+')')
    go--删除测试环境
    drop table 表1/*--测试结果
    项目   张三          李四          王五          
    ---- ----------- ----------- ----------- 
    数学   50          80          90
    物理   60          62          85
    语文   70          83          77(所影响的行数为 3 行)
    --*/
      

  3.   

    数学 int,物理 int,语文 int  能换成别的类型吗。我的数据为字符型,报错。