功能需求:从T中搜索出C字段=‘c’,并且A字段中如果相同取对应B字段最大的那条记录 即:
T表中数据:
A字段 B字段 C字段
aaa     1        c
aaa     2        c
aaa     3        c 
aaa     4        c
bbb     1        c
bbb     2        c需要得到查询之后的结果为:
A字段 B字段 C字段
aaa     4        c
bbb     2        c
请高人指点,非常感谢

解决方案 »

  1.   

    select a,max(b),c from t where c='c' group by a;
      

  2.   


    select A字段,count(*) as B字段 ,C字段 from z where C字段='c'  group by A字段,C字段
      

  3.   


     select A, max(B), C from T where C='c'group by A, C;
      

  4.   

    错了,修改下select distinct a,max(b) over( partition by a ), c from z
    where c='c'
      

  5.   

    -- 能少用分组最好不用分组:
    SQL> SELECT *
      2    FROM T T1
      3   WHERE NOT EXISTS (SELECT 1
      4            FROM T T2
      5           WHERE T1.A = T2.A
      6             AND T1.B < T2.B
      7             AND T2.C = 'C')
      8     AND T1.C = 'C';A            B C
    --- ---------- -
    AAA          4 C
    BBB          2 C
      

  6.   

    select t.*,row_number() over(partition by t.a order by b.desc) as isValid
    from t
    where t.c='C' and t.IsValid=1
      

  7.   

    select t.*,row_number() over(partition by t.c,t.a order by b.desc) as isValid 
    from t 
    where t.c='C' and t.IsValid=1
      

  8.   

    经测试  select A, max(B), C from T where C='c'group by A, C是可以正确运行出来结果的。
      

  9.   

    select a,max(b) from tabel group by a having c='c'
      

  10.   

    select a,max(b) from table where c='c' group by a