有朋友近来要我帮忙处理一个问题,问题描述: 
有表,表有3个字段:f1,f2,f3,其中,每个字段中都可能出现1~9之间的9个数字,现要统计出整个表中1~9各出现的次数。 
如:     
F1  
F2  
F3   
1  
1  
2   
1  
2  
3   
2  
1  
2   
在上例中:”1”出现了4次,”2”出现了4次,”3”出现了1次。   
当然,这个问题是要求尽可能的用SQL语句来搞定。由于如果用程序,用变量、数组之类,好象就没有提出这个问题的必要。当俺花了几分钟的心思,OVER之后,感觉到用SQL来考虑这个问题,好象就有了点意思,怎样用最简单明了的思路和方法将这个问题搞定?在此将这个问题和大家分享,希望能让大家任务、忙碌之余,换换心境,能换来一点小小的乐趣。   
在此将我的处理方法发布如下:   
SELECT A1, COUNT(A1) AS Expr1 
FROM (SELECT A1 FROM TEST 
               UNION ALL 
               SELECT A2 FROM TEST 
               UNION ALL 
               SELECT A3 FROM TEST 
)  
GROUP BY A1  
我是故意将字体颜色设置为白色,是为避免干扰您的思维,如果你想看,可用鼠标拖动,选择上面那块空白区域,将内容粘贴到写字板或查询分析器中即可。该SQL在SQLSERVER2000下调试通过。