试试 :select a,Max(b) as b ,Max(c) as c  from ppp group by a

解决方案 »

  1.   

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

  2.   

    To 云淡风轻:
    感谢您的回答:不过我要强调一点MAX(C)是不能去的,因为我需要的最大日期的那行数据,不是最大的属性列B的那行数据!!
      

  3.   

    我想这个结果肯定不是一条简单的SQL查询可以写出来的!!其中可能需要考虑表的内连接
      

  4.   

    select T1.A,T1.B,T1.C from ppp T1 left join (select A, max(C) as C from ppp group by A ) T2
    on T1.A = T2.A and T1.C = T2.C
      

  5.   

    TO 坚:
    十万感谢您的回答:您的方法我也是考虑过的,采用这种方法一定会在结果集中存在
    (2           4           2003-2-5)这条记录。假如以A列(2)为例,我需要按时间C降序排序的TOP1的那行数据
      

  6.   

    SELECT t1.a as A,
           (SELECT TOP 1 t2.b FROM PPP t2 
            WHERE t2.a=t1.a
            ORDER BY t2.b DESC) AS B,
           MAX(t1.c) as C 
    FROM PPP t1
    GROUP BY t1.a
      

  7.   

    理解错了,改成这样:
    SELECT t1.a as A,
           (SELECT TOP 1 t2.b FROM PPP t2 
            WHERE t2.a=t1.a AND t2.c=MAX(t1.c)) AS B,
           MAX(t1.c) as C 
    FROM PPP t1
    GROUP BY t1.a
      

  8.   

    select * from table_name where  c in (select max(c) from table_name group by a,b)
    你试试
      

  9.   

    写程序吧取数据吧 select a ,max(b) as b from ppp 取出每一个后,在检索出 c Sql 一句怎么合成 ? Study
      

  10.   

    得到关于属性A的最大日期C的数据列的最后一行的集和?
    看看能不能改变时间日期类型,改为:yy,mm,dd,hh,mm,ss
    这样避免有相同时间日期的记录
    否则你的最大日期有两条记录的
      

  11.   

    十万分的感谢zzhuz(大件):你真是一个牛X的人!!多谢您的帮助!如果TOP 1是取得第一行数据的话,那怎么取最后一行的数据
      

  12.   

    顺序的TOP 1是第一行数据,那倒序(DESC)的TOP 1就是最后一行了啊~~
      

  13.   

    不对:假设记录集是
    列名          A(Varchar(50))          B(Varchar(50))        C(DateTime(50))  
                  2                       HAHAHA                  2003-2-5  
                  2                       HEHEHE                  2003-2-5  我需要的结果是(2 HEHEHE 2003-2-5),而不是(2 HAHAHA 2003-2-5),这样显然排序是不能解决的
      

  14.   

    试一下这样:SELECT t1.a as A,
           (SELECT TOP 1 t2.b FROM PPP t2 
            WHERE t2.a=t1.a AND t2.c=MAX(t1.c)
            ORDER BY t2.b DESC) AS B,          --加了这句
           MAX(t1.c) as C 
    FROM PPP t1
    GROUP BY t1.a
      

  15.   

    select distinct a  from tbale order by b desc
    就可以了
      

  16.   

    SELECT * FROM PPP t1
    WHERE c IN (SELECT MAX(c) FROM PPP t2
                WHERE t2.a=t1.a) AND
          b IN (SELECT TOP 1 b FROM PPP t3
                WHERE t3.a=t1.a AND t3.c=t1.c
                ORDER BY b DESC)(跟原来一样的思路,只是改了样子)
      

  17.   

    我有个思路,既然是要先按照A来分类,那么就把A列相同记录的取出作为一个表T_N(如果A列有N个不同的类,那么就得有个N个表了),再取出每个分出的表中C列最大日期的记录取出来。讲不同的T_N表中取出的那些记录 union .得出你的问题解。
      

  18.   


    你验证一下吧,在我机器里可以得到你要的结果:
    SELECT A,B,C FROM PPP WHERE B IN (SELECT MAX(B) FROM PPP GROUP BY A)