问一个SQL语句 谢谢
一张表: 
 字段: 
 id,a   
 a可能包含的数据值:   m,n,o,p   
 id   a   各个字段都是有可能重复的,我想查询出的结果是   
 unique(id),   count(m),count(n),count(o),count(p)   
 也就是对ID分组,并对字段a中的值分组,且对字段A中出现值的数量进行统计,不知道有什么好的方法吗?   谢谢!
------解决方案--------------------  Select 
 	id, 
 	SUM(Case a When  'm ' Then 1 Else 0 End)As m, 
 	SUM(Case a When  'n ' Then 1 Else 0 End)As n, 
 	SUM(Case a When  'o ' Then 1 Else 0 End)As o, 
 	SUM(Case a When  'p ' Then 1 Else 0 End)As p 
 From 
 	表 
 Group By 
 	id
------解决方案--------------------  --建立测试数据 
 CREATE TABLE tb_a(ID INT,intString VARCHAR(50)) 
 INSERT tb_a  
 SELECT 1, 'm,n,o,p ' 	UNION ALL  
 SELECT 1, 'm,o,p ' 	UNION ALL  
 SELECT 1, 'm,n,p '	UNION ALL   
 SELECT 2, 'm,p ' 		UNION ALL  
 SELECT 3, 'p ' 		UNION ALL  
 SELECT 3, 'm,n,o,p ' 	UNION ALL  
 SELECT 3, 'm,o,p '  
 GO   
 SELECT id, 
 countm=sum(case when charindex( ',m, ', ', '+intString+ ', ')> 0 then 1 else 0 end), 
 countn=sum(case when charindex( ',n, ', ', '+intString+ ', ')> 0 then 1 else 0 end), 
 counto=sum(case when charindex( ',o, ', ', '+intString+ ', ')> 0 then 1 else 0 end), 
 countp=sum(case when charindex( ',p, ', ', '+intString+ ', ')> 0 then 1 else 0 end) 
 FROM tb_a 
 group by id