我有一张表TAB,里面有A ,B,C三个字段,A,B为主件,C的值只能在111,222,333三个中选
记录如
   A     B    C
   me    D   111
   she   k    222
   me    f   111
   me    e   333我现在要取出的形式是 A ,111的个数,222的个数,333的个个数
                     me, 2          0          1
                     she 0           1         0
请问这样的SQL语句怎么写

解决方案 »

  1.   

    sqlserver可以这么写select a.a,a.c1,b.c2,c.c3 from 
    (select a,count(c) as c1 from tab where c='111' group by a) a,
    (select a,count(c) as c1 from tab where c='222' group by a) b,
    (select a,count(c) as c1 from tab where c='333' group by a) c
    where a.a=b.a and a.a=c.a
      

  2.   

    SELECT a, sum(CASE c WHEN '111' THEN 1 else 0 end) v111, 
          sum(CASE c WHEN '222' THEN 1 else 0 end) v222, sum(CASE c WHEN '333' THEN 1 else 0 end) 
          v333
    FROM table1
    GROUP BY a
    a       v111      v222     v333
    -------------------------------me 2 0 1
    she 0 1 0(所影响的行数为 2 行)多天不上网,算是第一个回答问题了