select Name,[Good]=sum(case Type when 'good' then 1 else 0 end),[Bad]=sum(case Type when 'bad' then 1 else 0 end) from 数据表 group by Name

解决方案 »

  1.   

    select name,
    good = sum(case when type='good' then 1 else 0 end),
    bad = sum(case when type='bad' then 1 else 0 end)
    from table
    group by name
      

  2.   


    select name,good=sum(case type when 'good' then 1 else 0 end),
    bad=sum(case type when 'bad' then 1 else 0 end) from 表
    group by name
      

  3.   

    SELECT NAME,SUM(CASE WHEN TYPE='good' THEN 1 ELSE 0 END) GOOGD,SUM(CASE WHEN TYPE='bad' THEN 1 ELSE 0 END) AS BAD
    FROM T
    GROUP BY NAME
      

  4.   

    declare @t table(Name varchar(10),  Type varchar(10), date datetime) 
    insert @t select 'A'   , 'good',  '2008-09-09' 
    insert @t select 'B'   , 'bad' , '2008-01-01' 
    insert @t select 'A'   , 'good',  '2008-01-02' 
    insert @t select 'A'   , 'bad' , '2008-01-03' 
    select name,
    good = count(case when type='good' then 1  end),
    bad = count(case when type='bad' then 1  end)
    from @t
    group by name
    /*
    name       good        bad         
    ---------- ----------- ----------- 
    A          2           1
    B          0           1Warning: Null value is eliminated by an aggregate or other SET operation.
    */
      

  5.   

    select name,
    good = count(case when type='good' then 1 else 0 end),
    bad =  count(case when type='bad' then 1 else 0 end)
    from table
    group by name
      

  6.   

    select name,good=sum(case when type='good' then 1 else 0 end),bad=sum(case when type='bad' then 1 else 0 end) 
    from tb group by name
      

  7.   

    SELECT name,
           good=SUM(CASE WHEN type='good' THEN 1 ELSE 0 END,
           bad =SUM(CASE WHEN type='bad' THEN 1 ELSE 0 END
    FROM tb
    GROUP BY name
    ORDER BY name
      

  8.   


    SELECT name,
           good=SUM(CASE WHEN type='good' THEN 1 ELSE 0 END),
           bad =SUM(CASE WHEN type='bad' THEN 1 ELSE 0 END)
    FROM tb
    GROUP BY name
    ORDER BY name