找牛人写条SQL查询语句
表   t1,有个字段aaa 
 ID         aaa 
 1            a1,a2 
 2            a2,a4 
 3            a8 
 4             
 5            a9,a1   
 需得到结果: 
 a1 
 a2 
 a4 
 a8 
 a9 
 若能按出现的次数排序就更完美了 
 先谢谢!      
------解决方案--------------------在程序中控制吧,不要把太多逻辑控制放到SQL语句中,况且这种东西好像不太好搞
------解决方案--------------------一条sql语句搞不定,可能要考虑用到存储过程或者在程序里面控制
------解决方案--------------------绝对支持在前台处理 
 后台要对字符串处理很麻烦。其他没有什么, 
 也就是创建一个临时表,储存两个字段,一个是a1.a4.a8这样的内容,一个放次数。 
 然后用order by很容易就排出你想要的顺序。   
 sql的帮助找一下字符处理就可以做出来了,不难的。 
------解决方案--------------------在前台处理显然要比在数据库中直接操作效率要高得多啊..
------解决方案--------------------暂同wangkun9999的说法
------解决方案--------------------很显然,要使用类似split的函数   
 --1、建立split自定义函数 
 create  Function Split(@Sql varchar(8000),@Splits varchar(10)) 
 returns @temp Table (a varchar(100)) 
 As 
 Begin 
 	Declare @i Int 
 	Set @Sql = RTrim(LTrim(@Sql)) 
 	Set @i = CharIndex(@Splits,@Sql) 
 	While @i > = 1 
 	Begin 
 		Insert @temp Values(Left(@Sql,@i-1)) 
 		Set @Sql = SubString(@Sql,@i+1,Len(@Sql)-@i) 
 		Set @i = CharIndex(@Splits,@Sql) 
 	End  	 
 	If @Sql  <>   ' ' 
 	Insert @temp Values (@Sql) 
 	Return 
 End     
 --建立测试数据 
 create table t1 
 (id int identity(1,1),aaa varchar(1000)) 
 --插入数据 
 insert into t1 
 select  'a1,a2 ' union all 
 select  'a2,a4 ' union all 
 select  'a8 ' union all 
 select  ' ' union all 
 select  'a9,a1 '   
 --获取数据 
 declare @sql varchar(8000) 
 set @sql =  'select distinct * from split( ' ' ' 
 select @sql = @sql + aaa +  ', ' from t1 where isNull(aaa, ' ') <>  ' ' 
 if right(@sql,1)= ', ' 
 	set @sql = left(@sql,len(@sql)-1)   
 exec(@sql+  ' ' ', ' ', ' '); ')   
 /* 
 结果 
 a                                                                                    ---------------  
 a1 
 a2 
 a4 
 a8 
 a9   
 */
------解决方案--------------------什么需求要求要有这样的数据库结构啊??? 
 我觉得有百分之九十的可能是数据库设计不合理,要么就用XML字段得了,要么牺牲一点冗余吧!这样放在一个字段里,都不能看作一个集合,也用不了IN运算...
------解决方案--------------------为什么不用dataview去实现??
------解决方案--------------------select aaa from t1 group by aaa
------解决方案--------------------这个需求不合理   
 强烈要求换修改数据库   
 ^_^
------解决方案--------------------如果要获得最高的效率建议重新设计数据库 
 这个应该属于没有消除传递依赖。
------解决方案--------------------应该在后台处理.建个辅助表,一句可以搞定.
------解决方案--------------------Select   convert(char(2),aaa ) form  t1  order by  convert(char(2),aaa )   
 若都为两位 绝对可行^_^
------解决方案--------------------