这应该不是属于SQL的处理范围吧 ,应为SQL只是数据处理,而不是格式处理如果非要以这种形式选择出来,只能利用游标一行一列的插入到临时表!

解决方案 »

  1.   

    --示例--测试数据
    create table tb(学生 varchar(10),语文 int,数学 int,化学 int,地理 int,历史 int)
    insert tb select '张三',80,81,82,83,84
    union all select '李四',81,82,83,84,85
    go--查询处理
    declare @s1 varchar(8000),@s2 varchar(8000),@s3 varchar(8000),@s4 varchar(8000),@s5 varchar(8000)
    select @s1='''语文''',@s2='''数学''',@s3='''化学''',@s4='''地理''',@s5='''历史'''
    select @s1=@s1+',['+rtrim(学生)+']='+rtrim(语文)
    ,@s2=@s2+','+rtrim(数学)
    ,@s3=@s3+','+rtrim(化学)
    ,@s4=@s4+','+rtrim(地理)
    ,@s5=@s5+','+rtrim(历史)
    from tb
    exec('select '+@s1+'
    union all select '+@s2+'
    union all select '+@s3+'
    union all select '+@s4+'
    union all select '+@s5)
    go--删除测试
    drop table tb/*--测试结果     张三          李四          
    ---- ----------- ----------- 
    语文   80          81
    数学   81          82
    化学   82          83
    地理   83          84
    历史   84          85
    --*/