with A_CODE as
 (select 'JACK' namea, '2' a, '1' b    from dual
  union all
  select 'JACK' namea, '3' a, '2' b    from dual
  union all
  select 'JACK' namea, '1' a, '3' b    from dual
  union all
  select 'TOM' namea, '1' a, '1' b    from dual
  union all
  select 'TOM' namea, '2' a, '2' b    from dual
  union all
  select 'TOM' namea, '4' a, '3' b    from dual
  union all
  select 'SAM' namea, '2' a, '1' b    from dual
  union all
  select 'SAM' namea, '2' a, '2' b from dual)根据namea分组  求a/b 的值分别在0-1和1-2的列count值plsqlSQL

解决方案 »

  1.   

    这样?
    with A_CODE as
     (select 'JACK' namea, '2' a, '1' b
        from dual
      union all
      select 'JACK' namea, '3' a, '2' b
        from dual
      union all
      select 'JACK' namea, '1' a, '3' b
        from dual
      union all
      select 'TOM' namea, '1' a, '1' b
        from dual
      union all
      select 'TOM' namea, '2' a, '2' b
        from dual
      union all
      select 'TOM' namea, '4' a, '3' b
        from dual
      union all
      select 'SAM' namea, '2' a, '1' b
        from dual
      union all
      select 'SAM' namea, '2' a, '2' b from dual)
    select namea,
           sum(case
                 when a between 0 and 1 then
                  1
                 else
                  0
               end) a,
           sum(case
                 when b between 1 and 2 then
                  1
                 else
                  0
               end) b
      from a_code
     group by namea;