我现要将表中的行列转换,如表一
姓名      科目         成绩
王二      数学         85
王二      语文         90
王二      英语         94
张三      数学         98
张三      语文         92
张三      英语         96输出为:
姓名      科目1      成绩1    科目2      成绩2     科目3      成绩3
王二      数学       85       语文       90        英语       94
张三      数学       98       语文       92        英语       96

解决方案 »

  1.   

    参见
    http://expert.csdn.net/Expert/TopicView1.asp?id=1015421
      

  2.   

    select a.姓名,a.科目 as 科目1,a.成绩 as 成绩1,b.科目 as 科目2,b.成绩 as 成绩2,c.科目 as 科目3,c.成绩 as 成绩3 from
    (select 姓名,科目,成绩 from 表一 where 科目=数学) a
    left join
    (select 姓名,科目,成绩 from 表一 where 科目=语文) b
    on a.姓名=b.姓名
    left join
    (select 姓名,科目,成绩 from 表一 where 科目=英语) c
    on a.姓名=c.姓名
      

  3.   

    xiaoyuer0851(小鱼儿0851):
    可能这严格上不能说是一个行列转换,我的目的是想对相同姓名的不同科目、成绩写到一行纪录里去。