select a,max(B),max(C) from ppp group by A

解决方案 »

  1.   

    to 蚂蚁:
    感谢您的回答:我的问题是属性列B是不能用MAX来取得的,它最大日期那行的B值,并不是最大值
      

  2.   

    select a,max(cast(B as int)),max(C) from ppp group by A
      

  3.   

    select * from ppp A left join 
    (select a,,max(C) C from ppp group by A)B
    a.a=b.a and a.c=b.c
      

  4.   

    上面多了个逗号:select * from ppp A left join 
    (select a,max(C) C from ppp group by A)B
    a.a=b.a and a.c=b.c
      

  5.   

    select distinct * from yourtable where (a,b) in (select a,max(b) from yourtable group by a )
      

  6.   

    表有没有主键?
    select * from ppp where 主键 in 
    (select top 1 主键 from order by C desc ppp group by A)
      

  7.   

    Sorry,select a,max(b),c from yourtable where (a,c) in (select a,max(c) from yourtable group by a )
    group by a,c
      

  8.   

    TO 空杯:
    感谢您的回答:不过我要说明一点,结果集不是按照最大的属性列B来得到的,而是按照最大的属性列C来得到的,而B的结果的取得是在同样的A,C中的结果列最靠上的那个B
      

  9.   

    select a,max(b),c from yourtable where (a,c) in (select a,max(c) from yourtable group by a )
    group by a,c首先是按照最大的属性列C来得到的,在同样A,C的情况下,取B值最大的不知“最靠上的那个B”如何用SQL表示?
      

  10.   

    select * from ppp A left join 
    (select a,max(C) C from ppp group by A)B
    a.a=b.a and a.c=b.c这个应该对的啊。
      

  11.   

    TO 空杯:
    Select Top 1 B From MyTable
      

  12.   

    如果 a , c 可以唯一决定一列的话select a,b,c from ppp 
    inner join 
    (select a,max(c) c from ppp group by a) as ppp_1
    on ppp.a=ppp_1.a and ppp.c=ppp_1.c
      

  13.   

    select * from ppp where C in 
    (select top 1 C from order by C desc ppp group by A)
      

  14.   

    TO 老乌鸦:
    A,C不可以唯一确定一个列,就算是A,B,C也不能唯一确定一个列
      

  15.   

    select A.* from (select A,max(B) B,c from ppp group by a,c) A left join 
    (select a,max(C) C from ppp group by A)B
    a.a=b.a and a.c=b.c
      

  16.   

    select * from ppp where C in 
    (select max(C) from ppp group by A)
      

  17.   

    如果A,B,C都不能确定一列的话,如果你使用的是oRAcLE,那么你需要ROWID来作唯一区分
      

  18.   

    SELECT A,B,C FROM TEST WHERE ROWID IN (SELECT MAX(ROWID) FROM TEST WHERE C IN (SELECT MAX(C) FROM TEST GROUP BY A) GROUP BY C,A);
    前提是ORACLE数据库,因为ROWID可以唯一确定一列(如果你的表中A,B,C都不能唯一确定一列的话)。
    如果你不想使用ROWID或者无法使用,则需先删除重复纪录(A,B,C均相同的)