1.
现在有这样一个数据表student 
name object score 
a EN 89 
a CH 78 
a HO 99 
b EN 34 
b CH 88 
b HO 66 
要求生成下面样式 
name EN CH HO 
a 89 78 99 
b 34 88 66
2.
表一 
学生编号 学生姓名 科别 分数  
1083 张三 语文 75 
1083 张三 数学 84 
1083 张三 英语 92 
1084 李四 语文 84 
1084 李四 数学 93 
1084 李四 英语 87 怎么得出如下的表 
学生编号 学生姓名 语文 数学 英语 
1083 张三 75 84 92 
1084 李四 84 93 87 

解决方案 »

  1.   


    select 学生编号,name,
     sum(case when object='CH' then score end) As '语文',
     sum(case when object='HO' then score end) As '数学',
     sum(case when object='EN' then score end) As '英语'
     From  表一 Group By 姓名
      

  2.   

    1.
    现在有这样一个数据表student 
    name object score 
    a EN 89 
    a CH 78 
    a HO 99 
    b EN 34 
    b CH 88 
    b HO 66 
    要求生成下面样式 
    name EN CH HO 
    a 89 78 99 
    b 34 88 66

    select name,
    max(if(object='EN',score,0)) as 'EN',
    max(if(object='CH',score,0)) as 'CH',
    max(if(object='HO',score,0)) as 'HO'
    from student 
    group by name
      

  3.   

    表一 
    学生编号 学生姓名 科别 分数  
    1083 张三 语文 75 
    1083 张三 数学 84 
    1083 张三 英语 92 
    1084 李四 语文 84 
    1084 李四 数学 93 
    1084 李四 英语 87 怎么得出如下的表 
    学生编号 学生姓名 语文 数学 英语 
    1083 张三 75 84 92 
    1084 李四 84 93 87 
    select 学生编号,学生姓名
    max(if(科别='语文',分数,0)) as '语文',
    max(if(科别='数学',分数,0)) as '数学',
    max(if(科别='英语',分数,0)) as '英语'
    from 表一  
    group by 学生编号,学生姓名
      

  4.   

    http://blog.csdn.net/ACMAIN_CHM/archive/2009/06/19/4283943.aspx
    MySQL交叉表 
      

  5.   

    用SUM(IF()) OR SUM(CASE WHEN)即可,也可以用字符串累加生成SQL语句的方法动态执行