如图我的语句是这个select section,count(*)
              from (
                select case 
                  when blfy like '%aaa%'
                    then 'aaa'
                   when blfy like '%bbb%'
                     then 'bbb'
                    when blfy like '%ccc%'
                      then 'ccc'
                     end section
                  from inpatient_info )
                group by section   
结果 就显示出a:5 然后就没有了

解决方案 »

  1.   

    select section,count(*)
                  from (
                    select case 
                      when blfy like 'aaa'
                        then 'aaa'
                       when blfy like 'bbb'
                         then 'bbb'
                        when blfy like 'ccc'
                          then 'ccc'
                         end section
                      from inpatient_info )
                    group by section  
    这样也不行……
      

  2.   

    用unionselect 'aaa', count(1) from inpatient_info where blfy like 'aaa'
    union
    select 'bbb', count(1) from inpatient_info where blfy like 'bbb'
    union
    select 'ccc', count(1) from inpatient_info where blfy like 'ccc'
      

  3.   

    不行呀~~~ 那个列里面的是个字符串'aaa;bbb;ccc' 字符串内容 这个条件没法统计instr(blfy,'aaa')这个函数好像可以统计字符串里面的字符出现的次数
      

  4.   

    不行呀~~~ 那个列里面的是个字符串'aaa;bbb;ccc' 字符串内容 这个条件没法统计instr(blfy,'aaa')这个函数好像可以统计字符串里面的字符出现的次数不明白你说的为啥union不行用instr也可以
      

  5.   

    instr是返回子串在目标字串中的位置,找不到就返回0
      

  6.   

    这样可以统计,不过是纵列显示
    SELECT   SUM(count_aaa) aaa, SUM(count_bbb) bbb, SUM(count_ccc) ccc
        FROM (SELECT DECODE(INSTR(BLFY, 'aaa'), 0, 0, 1) count_aaa,
                     DECODE(INSTR(BLFY, 'bbb'), 0, 0, 1) count_bbb,
                     DECODE(INSTR(BLFY, 'ccc'), 0, 0, 1) count_ccc
                FROM INPATIENT_INFO)
      

  7.   

    select section, SUM(data) data
                  from (
                  
                    (select case when blfy like '%aaa%' then 1 else 0 end data, 'a' as section from inpatient_info) 
                    union all 
                    (select case when blfy like '%bbb%' then 1 else 0 end data, 'b' as section from inpatient_info)
                    union all
                    (select case when blfy like '%ccc%' then 1 else 0 end data, 'c' as section from inpatient_info)
                       ) A
                    group by section 
    就是这样子了! 
      

  8.   


    union
    显示的结果是这个实际上 都应该有数值
      

  9.   


    CREATE TABLE inpatient_info(BLFY VARCHAR2(100), BLFY_SUM NUMBER)INSERT INTO inpatient_info VALUES ('aaa;bbb;ccc', 3);
    INSERT INTO inpatient_info VALUES ('aaa;bbb;ccc', 3);
    INSERT INTO inpatient_info VALUES ('bbb;ccc', 2);
    INSERT INTO inpatient_info VALUES ('aaa', 1);
    INSERT INTO inpatient_info VALUES ('aaa;bbb', 2);
    INSERT INTO inpatient_info VALUES ('aaa;ccc', 2);select * from inpatient_infoselect 'aaa', count(1) from inpatient_info where blfy like '%aaa%'
    union
    select 'bbb', count(1) from inpatient_info where blfy like '%bbb%'
    union
    select 'ccc', count(1) from inpatient_info where blfy like '%ccc%'
    结果:
      

  10.   


    SELECT   SUM(count_aaa) aaa, SUM(count_bbb) bbb, SUM(count_ccc) ccc
        FROM (SELECT DECODE(INSTR(BLFY, 'aaa'), 0, 0, 1) count_aaa,
                     DECODE(INSTR(BLFY, 'bbb'), 0, 0, 1) count_bbb,
                     DECODE(INSTR(BLFY, 'ccc'), 0, 0, 1) count_ccc
                FROM INPATIENT_INFO)上面SQL的结果: