ORACLE表结构如下:
表A 字段code(字符型),pqr(数值型),bdatetime(时间日期型)形如:
code          pqr         bdatetime
 1            20          2010-04-02 12:00:00
 2            30          2010-04-02 12:00:00 

 1            30          2010-04-02 13:00:00
 2            40          2010-04-02 13:00:00 

 1            40          2010-04-01 12:00:00
 2            50          2010-04-01 12:00:00 。求SQL,列出按CODE列表中的PRQ值和24小时内的最大值
结果应该是形如:
code          pqr         bdatetime                 max(pqr)
 1            20          2010-04-02 12:00:00       40
 2            30          2010-04-02 12:00:00       50

 1            30          2010-04-02 13:00:00       40
 2            40          2010-04-02 13:00:00       50

 1            40          2010-04-01 12:00:00       40
 2            50          2010-04-01 12:00:00       50

解决方案 »

  1.   

    select code, pqr ,bdatetime,max_pqr
    from A,
    (select code ,max(pqr) AS max_pqr from A group by code ) B
    WHERE A.CODE=B.CODE
      

  2.   

    select code, pqr ,bdatetime,max_pqr
    from A,
    (select code ,max(pqr) AS max_pqr from A group by trunc(bdatetime)) B
    WHERE A.CODE=B.CODE
      

  3.   

    两位回答者的思路是对的,但是解答时还是没看清楚题的要求。是要求在24小时(bdatetime字段)内的最大值,而不是相同CODE的最大值。
      

  4.   

    24小时(bdatetime字段)内的最大值? 那么零点为起始点?
      

  5.   

    在24小时(bdatetime字段)内?
    看你得到的数据都跨越天了,24?
      

  6.   

    select a.code, a.pqr ,a.bdatetime,max(b.pqr)
    from A, A B
    where abs(a.bdatetime - b.bdatetime) <=1
      and a.code = b.code