有一个表,其中两个字段为a,b,c
数据如下:
a  b  c
1  0  1
1  1  1
1  2  1
2  0  1
2  1  1
2  2  1
...
条件:当a值固定的时候,b值不重复
求一个sql,
1.查询结果中包括a,b,c
2.a值不重复,b,c值做不限制返回结果类似:
a  b  c
1  0  1
2  1  1

解决方案 »

  1.   

    select distinct a,b,c from table t1,
    (
    select distinct a,min(b) as b from table group by a
    ) t2
    where 
    t1.a = t2.a and t1.b = t2.b 
    order by t1.a
    这样得到的结果就是:
    a  b  c
    1  0  1
    2  1  1
      

  2.   

    select distinct t1.a,t1.b,t1.c from table t1, 

    select distinct a,min(b) as b from table group by a 
    ) t2 
    where 
    t1.a = t2.a and t1.b = t2.b 
    order by t1.a 
    这样得到的结果就是: 
    a  b  c 
    1  0  1 
    2  1  1
    不好意思,上面少打了几个字符
      

  3.   

    1楼麻烦了!
    以下应该就可以了!
    select a,b,c from table t1, 

    select distinct a,min(b) as b from table group by a 
    ) t2 
    where 
    t1.a = t2.a and t1.b = t2.b 
      

  4.   

    补充说明:最外层不用distinct了!
      

  5.   


    SELECT A,B,C FROM
    (SELECT ROW_NUMBER() OVER(PATTITION BY A ORDER BY B) RN ,A,B,C FROM YOURTABLE)
    WHERE RN=1
      

  6.   

    select a,max(b) b,max(c)c from temp t
    group by a
    a       b       c
    1 2 1
    2 2 1
      

  7.   

    呵呵。。以上sql应该都是可行的。不知楼主的意思到底是什么?如果仅是想a不重复的话,关键在于对a的group by上。至于b,c不作要求,所以,只要有一个可以适用于分组的函数就ok了,比如7楼朋友的sql。