有数据如下:
name   score
张三    优
张三    优
张三    良
张三    良
张三    及格
李四    优
李四    良
李四    良
李四    良
李四    及格
李四    及格求SQL后结果为:
name    优   良   及格
张三    2    2     1
李四    1    3     2
  大侠们,靠你们了…… 

解决方案 »

  1.   

    select name,
    sum(decode(score,'优',1)) as "优",
    sum(decode(score,'良',1)) as "良",
    sum(decode(score,'及格',1)) as "及格"
    from table1
    group by name
      

  2.   

    with temp as(
    select '张三' name,'优' score from dual
    union all
    select '张三' name,'优' score from dual
    union all
    select '张三' name,'良' score from dual
    union all
    select '张三' name,'良' score from dual
    union all
    select '张三' name,'及格' score from dual
    union all
    select '李四' name,'优' score from dual
    union all
    select '李四' name,'良' score from dual
    union all
    select '李四' name,'良' score from dual
    union all
    select '李四' name,'良' score from dual
    union all
    select '李四' name,'及格' score from dual
    union all
    select '李四' name,'及格' score from dual

    select name,
        sum(decode(score,'优',1)) as "优",
        sum(decode(score,'良',1)) as "良",
        sum(decode(score,'及格',1)) as "及格"
    from temp
    group by name
      

  3.   

    原来还有这么个decode函数啊,我还是第一次知道。我去好好查查看。谢谢指教。结贴了!