mysql同一列中统计不同的字符出现的个数
我有一个MySQL表,将要用于统计,现在碰到难题,求教于各位大虾:
表格式如下:
|----|--------|
|NAME| FIELD_1|
|----|--------|
|Tom | A |
|----|--------|
|John| B |
|----|--------|
|Sun | C |
|----|--------|
|Dany| E |
|----|--------|
|Tom | D |
|----|--------|
|John| C |
|----|--------|
|... | ... |
|----|--------|
|... | ... |
|----|--------|
现在的问题是,我要根据人名来统计Field_1这一栏中A,B,C,D,E分别出现的次数,其统计的最终结果结构如下:
|----|--------|--------|--------|--------|--------|
|NAME| NumOfA | NumOfB | NumOfC | NumOfD | NumOfE |
|----|--------|--------|--------|--------|--------|
|----|--------|--------|--------|--------|--------|
|Tom | 20 | 18 | 34 | 69 | 9 |
|----|--------|--------|--------|--------|--------|
|John| 12 | 23 | 78 | 99 | 11 |
|----|--------|--------|--------|--------|--------|
|... | ... | ... | ... | ... | ... |
|----|--------|--------|--------|--------|--------|
|... | ... | ... | ... | ... | ... |
|----|--------|--------|--------|--------|--------|
请教各位,用SQL怎么实现?要求:最好不要额外创建的表或视图!!
select name,sum(if(FIELD_1='A',1,0)) AS NumOfA,
sum(if(FIELD_1='B',1,0)) AS NumOfB,
sum(if(FIELD_1='C',1,0)) AS NumOfC
FROM TT GROUP BY NAME
上述为静态的,也可以动态生成SQL语句,
select distinct FIELD_1 from tt
用循环累加字符串最后执行