现在我是根据vid等于4查询分组ANSWERAD查询语句为
select  count( answerad ) , answerad
from it_plan
where vid =4 
group by answerad得到的结果为
骨干网络,   15
骨干网络,接入网络, 3
骨干网络,接入网络,用户端 ,   28现在的要求是查询结果为
骨干网络, 46
接入网络, 31
用户端,   28
求大神指教

解决方案 »

  1.   


    -- 创建数字辅助表    
    CREATE  TABLE  Temp_Num ( xh INT PRIMARY KEY );  
     -- 插入数据 
    SET @i = 0;  
       
    INSERT INTO Temp_Num(xh) -- 写入数字辅助表     
    SELECT @i := @i+1     
    FROM information_schema.COLLATIONS
       
    -- 查询
    SELECT t.n,SUM(num) AS num
    FROM 
    (
    SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(LEFT(s.n,CHAR_LENGTH(s.n)-1),',',l.xh),',',-1) AS n,
           s.numFROM 
    (
    SELECT '骨干网络,' n,15 num UNION ALL
    SELECT '骨干网络,接入网络,', 3 UNION ALL
    SELECT '骨干网络,接入网络,用户端,',28
    )sJOIN Temp_Num l ON((l.xh <= ((LENGTH(s.n)-1 - LENGTH(REPLACE(s.n,',',''))) + 1)))
    )t
    GROUP BY t.n
    ORDER BY SUM(num) DESC