table  : A, B, C,D 
A:表示id,不可重复
B,C: 可以重复出现
运行环境:oracle9i
问题: 按b,c 分组后(select b,c,count(*) from table group by b,c),最后结果:   A,B,C,count(*)
注:select A,B,C,count(*) group by A,B,C 请 不要给出这样的答案,一看就知道错的. 
求高手帮下忙,万分感谢 

解决方案 »

  1.   

    select a,b,c from table
       ok 搞定
      

  2.   

    真不明白想怎么样???A既然ID,可你又来个count。。那么ID怎么个表示????
      

  3.   

    select b,c,count(*) from table group by b,c),最后结果: A,B,C,count(*),你要最大的A还是最小的A还是随便哪个A还是全部A?最大:
    select max(a) as a,b,c,count(*) from table group by b,c;
    最小:
    select min(a) as a,b,c,count(*) from table group by b,c;
    全部:
    貌似要用存储过程或函数来实现,wm_concat函数是10g才支持的。
      

  4.   

    B+C是唯一的马?从你count(*)来看,应该不是唯一的把。
    但是A是唯一的。如果在检索结果里出现A,那么count无可避免的变成1所以lz,你想要什么样的结果?
    最大A,最小A?
    还是说要所有A,并且需要纪录条数?
    建议你
    select a,b,c from table order by b,c
    用纪录条数来取得一组b,c有多少条或者用两句sql来实现。
    select a,b,c from table order by b,c
    select b,c,count(*) from table group by b,c
      

  5.   

    select min(a) as a,b,c,count(*) from table group by b,c;
    楼主在这里混淆概念,该打。
      

  6.   

    楼主描述的真的不清楚。。如果楼主想得到 A,B,C,COUNT(*)的结果。COUNT(*)是B,C分组后的所有行数。select A,B,C,(select count(*) from table group by b,c) D from table;这样做意义不知道何在但是根据楼主的描述。我不由得写出了这个
      

  7.   


    select A,B,C,count(*) from Table t inner join (select B,C from Table group by B,C) tt
    on t.B=tt.B and t.C=tt.C由于家的本烂木有数据库,帮你写的一个,没测试,楼主自己试试吧。
      

  8.   

    哦,我明白了,a不在group 中,所以不能那么写。 可以写成
    select b,c,count(*) from t group by b,c
    但是加上a就不行了。所以需要使用自然连接,但是自然连接是对表的连接,无法对结果集连接。
    所以需要使用临时表,所以需要使用存储过程来实现。解决办法就是使用存储过程,建立一个临时表,临时表temp,里面存放 
    select b,c,count(*) from t group by b,c的结果然后 select a,b,c,count(*) from (t join temp on t.b=temp.b and t.c=temp.c)这样输出的结果就是你想要的答案了