表tb:
          Name    Level1   Level2   Level3
           a        OK
           a        OK       OK
           b        OK       OK
           c        OK       OK       OK
我想得到如下结果
         Name    Level1   Level2   Level3
          a         2        1
          b         1        1         
          c         1        1        1也就是分组统计Level的数量,如何写SQL,请教各位了!

解决方案 »

  1.   

    select  t.Name, sum(decode(Level1, 1, 0)), decode(case(Level2, 1, 0)), decode(case(Level3, 1, 0))
     from tb t
     group by t.name
      

  2.   

    select  t.Name, sum(decode(t.Level1, 1, 0)), sum(decode(t.Level2, 1, 0)), sum(decode(t.Level3, 1, 0))
     from tb t
     group by t.name
      

  3.   

    呵呵 在SQL区也见这个问题 :)
      

  4.   

    好象问了几次了吧,按1楼写没错,如果你的ok不是固定值,就只好用动态sql写过程了
      

  5.   

    select  t.Name, 
    sum(decode(t.Level1, 'OK',1, 0)), 
    sum(decode(t.Level2, 'OK',1, 0)), 
    sum(decode(t.Level3, 'OK',1, 0))
     from tb t
     group by t.name