本帖最后由 xiaolu0917 于 2012-03-19 20:12:14 编辑

解决方案 »

  1.   

    行列转换,自己Google下吧,有标准做法的:提示下,关键是:SUM(Case 科目 When '英语' Then 成绩 Else 0 End) As 英语,
      

  2.   

    select 姓名,英文,语文,数学
    from 表名
    pivot
    (
    成绩
    for 科目
    in(英文,语文,数学)
    )
      

  3.   

    pivot 关键字似乎目前只有 MS SQL Server 支持,不过确实很方便。
      

  4.   


    select 姓名,sum(case when 科目='英文' then 成绩 else 0 end) as 英文,sum(case when 科目='语文' then 成绩 else 0 end) as 语文,sum(case when 科目='数学' then 成绩 else 0 end) 数学
    from 成绩
    group by 姓名
      

  5.   

    select 姓名,英文,语文,数学,(英文+语文+数学) as 总分
    from 
    (select 成绩 as 语文 , 姓名 from TABLE where 科目 = '语文') as A,
    (select 成绩 as 数学 , 姓名 from TABLE where 科目 = '数学') as B,
    (select 成绩 as 英文 , 姓名 from TABLE where 科目 = '英文') as C
    where A.姓名 = B.姓名
    and B.姓名 = C.姓名模拟成3张表
      

  6.   


    select name, sum(decode(subjects,'英文',result)) 英文,sum(decode(subjects,'语文',result)) 语文,sum(decode(subjects,'数学',result)) 数学
    from scores
    group by name
    order by name desc;
      

  7.   

    select name,
    sum(case kemu when '语文' then chengji else 0 end) 语文,
    sum(case kemu when '英语' then chengji else 0 end) 英语,
    sum(case kemu when '数学' then chengji else 0 end) 数学 
    from 表 group by name
      

  8.   


    select name,sum(case when km='英语' then cj else 0 end) as 英文,sum(case when km='语文' then cj else 0 end) as 语文,
    sum(case when km='数学' then cj else 0 end) as 数学 from student group by name;
      

  9.   

     
    select name,sum(case when km='英语' then cj else 0 end) as 英文,sum(case when km='语文' then cj else 0 end) as 语文, 
    sum(case when km='数学' then cj else 0 end) as 数学 from student group by name;