现在想将表中的数据按两个字段进行分组如下:A     B    C
a1    b1   c1
a2    b1   c2
a3    b2   c3
a4    b3   c2按B和C列分组后,想得到如下结果:count(A)    B     C
   2        b1
   1        b2
   1        b3
   1              c1
   2              c2
   1              c3

解决方案 »

  1.   


    select count(1) num ,b, null c
          from table a
    group by b
    union all
    select count(1) num ,null b,  c
          from table a
    group by c
      

  2.   

    我试了一下有 如下问题:
    请指点一下SQL> select count(1) num,b,null c
      2  from table a
      3  group by b
      4  union all
      5  select count(1) num,null b,c
      6  from table a
      7  group by c;
    from table a
               *
    ERROR 位于第 2 行:
    ORA-00906: 缺少左括号
      

  3.   


    是正确的,运行时是不加table的,只要将table的名称代替即可,就不会出错了
      

  4.   

    good!very good!very very good!!!!!!!
      

  5.   

    SELECT COUNT(A),B,NULL AS C  FROM TEST
    GROUP BY B
    UNION ALL
    SELECT COUNT(A),NULL AS B,C FROM TEST
    GROUP BY C ;
      

  6.   

    发现的另一种写法
    select count(1) num ,b, c 
          from table a 
    group by grouping sets(b,c)