参照下面的语句
SELECT col1,COUNT (CASE WHEN col2 = 'a'
THEN 1 ELSE null END) a,
COUNT (CASE WHEN col2 = 'b'
THEN 1 ELSE null END) b,
COUNT (CASE WHEN col2 = 'c'
THEN 1 ELSE null END) c
FROM table1
group by col1;

解决方案 »

  1.   

    这个问题由以前的贴子你可以查一下
    我认为应该是在程序里处理比较合理
    或者写存储过程来返回一个新的游标比较好
    这样既可保证效率又可以保证可扩展性
    当然,如果只能出现a,b,c三种情况,你就可以采用楼上的方法
      

  2.   

    更正查询结果是:
            a     b     c
    a1      yes    yes   yes
    a2      yes     yes   no 我用:
    SELECT  COL1 ,
           (CASE WHEN COL2='a'  THEN 'YES' ELSE 'NO' END) a,
           (CASE WHEN COL2='b'  THEN 'YES' ELSE 'NO' END) b,
            (CASE WHEN COL2='c'  THEN 'YES' ELSE 'NO' END) c
    FROM table1
    得到的查询结果是:
            a     b     c
    a1      yes   no    no
    a1      no    yes   no
    a1      no    no    yes
    a2      yes   no    no 
    a2      no    yes   no
    不合要求
      

  3.   

    SELECT col1,
    sum(decode col2,'a',1,col2,0) cola,
    sum(decode col2,'b',1,col2,0) colb,
    sum(decode col2,'c',1,col2,0) colc
    FROM table1
    group by col1;
      

  4.   

    select sum(decode(col2,a,1,0)) a,
           sum(decode(col2,b,1,0)) b,
           sum(decode(col2,c,1,0)) c,
    from table1
    group by col1;
      

  5.   

    不是要做统计原table1:
    col1    col2
    a1      a
    a1      b
    a1      c
    a2      a
    a2      b更正查询结果是:
            a     b     c
    a1      yes    yes   yes
    a2      yes     yes   no
      

  6.   

    select decode(sum(decode(col2,'a',1,0)),0,'no','yes') a,
           decode(sum(decode(col2,'b',1,0)),0,'no','yes') b,
           decode(sum(decode(col2,'c',1,0)),0,'no','yes') c
    from table1
    group by col1;