如果是通常行边列的问题.
可以用decode解决.

解决方案 »

  1.   

    select c,min(decode(b,'b1',a,null)),
             min(decode(b,'b2',a,null)),
             min(decode(b,'b3',a,null))
      from tab1
     group by c
      

  2.   

    照我的理解搂主不是这意思。他是要实现一个统计:
    <b,c>={b1,c1},{b1,c2},{b1,c3},{b2,c1}.....的各有多少个。有难度,还没想出来:)
      

  3.   

    如果是这样的话,只要改一下 onejune4450(中文字符) 的:select c,count(decode(b,'b1',a,null)),
             count(decode(b,'b2',a,null)),
             count(decode(b,'b3',a,null))
      from tab1
     group by c;------------------------------------------------------------
    试验过程:drop sequence seq_zhj;
    create sequence seq_zhj start with 1;
    drop table test;
    create table test(a number,b varchar2(10),c varchar2(10));
    insert into  test values (seq_zhj.nextval,'b1','c1');
    insert into  test values (seq_zhj.nextval,'b2','c2');
    insert into  test values (seq_zhj.nextval,'b3','c3');
    insert into  test values (seq_zhj.nextval,'b1','c2');
    insert into  test values (seq_zhj.nextval,'b1','c3');
    insert into  test values (seq_zhj.nextval,'b2','c1');
    insert into  test values (seq_zhj.nextval,'b3','c1');
    insert into  test values (seq_zhj.nextval,'b1','c3');
    insert into  test values (seq_zhj.nextval,'b1','c2');
    insert into  test values (seq_zhj.nextval,'b1','c1');
    insert into  test values (seq_zhj.nextval,'b2','c1');
    insert into  test values (seq_zhj.nextval,'b2','c2');
    insert into  test values (seq_zhj.nextval,'b1','c2');
    insert into  test values (seq_zhj.nextval,'b3','c1');
    insert into  test values (seq_zhj.nextval,'b3','c1');
    commit;SQL> @c:\test.sql序列已丢弃。
    序列已创建。
    表已丢弃。
    表已创建。
    已创建 1 行。
    已创建 1 行。
    已创建 1 行。
    已创建 1 行。
    已创建 1 行。
    已创建 1 行。
    已创建 1 行。
    已创建 1 行。
    已创建 1 行。
    已创建 1 行。
    已创建 1 行。
    已创建 1 行。
    已创建 1 行。
    已创建 1 行。
    已创建 1 行。
    提交完成。SQL> select c,count(x.b) b1 from test x where x.b = 'b1' group by x.c;C                  B1                                                           
    ---------- ----------                                                           
    c1                  2                                                           
    c2                  3                                                           
    c3                  2                                                           SQL>  select c,count(y.b) b2 from test y where y.b = 'b2' group by y.c;C                  B2                                                           
    ---------- ----------                                                           
    c1                  2                                                           
    c2                  2                                                           SQL>  select c,count(z.b) b3 from test z where z.b = 'b3' group by z.c;C                  B3                                                           
    ---------- ----------                                                           
    c1                  3                                                           
    c3                  1                                                           SQL> select c,count(decode(b,'b1',a,null)) b1,
      2           count(decode(b,'b2',a,null)) b2,
      3           count(decode(b,'b3',a,null)) b3
      4    from test
      5   group by c;C                  B1         B2         B3                                     
    ---------- ---------- ---------- ----------                                     
    c1                  2          2          3                                     
    c2                  3          2          0                                     
    c3                  2          0          1                                     -------------------------------------------------------------
    应该达到目的了吧?嘿嘿!