在某一个表中,比方这个表的名字是grib我想在这个表中,找某一个列(比如这个列的名字是ldate)的最大值这个表中还有另外一个列,列的名字是eco,eco的取值可以从1到10但是我希望找最大值的条件是eco=1,eco=2,eco=3中的最大值也就是说,我如何才能找到最大的ldate,而且对于这个最大的ldate,满足有eco=1,eco=2,eco=3都有。显然,使用select max(ldate) from grib where eco in(1,2,3)不行希望各位能够指教。多谢多谢。

解决方案 »

  1.   

    你是要先找到max(ldate)然后再找里面有eco=1,eco=2,eco=3的纪录
    select aa.*
    from 
    (select a.*,max(a.ldate) max_ldate
    from grib a) aa,
    (
    select max(ldate) max_ldate_1 from grib where eco in(1,2,3)) bb
    where aa.max_ldate=bb.max_ldate_1 还是找eco=1,eco=2,eco=3纪录里的max(ldate)(select max(ldate) from grib where eco in(1,2,3)这句就行了)
      

  2.   

    楼住的描述是有问题的:
    你怎么确定一行记录的?
    我希望找最大值的条件是eco=1,eco=2,eco=3中的最大值  这句话表示:有某个列中的某个值符合  eco=1,eco=2,eco=3 ,至少有3条记录。这个列不会是你前面说的ldate,是的话就没max了
      

  3.   

    select max(ldate)
           from (select ldate from  grib where  eco in(1,2,3))grib_linshi;
           
      

  4.   

    我的意思是找一个的max(ldate)
    这个max(ldate)要满足eco=1,eco=2,eco=3都有如果不行的话,那么只能退而求其次,找到另外一个可能不那么最大的ldate
    还是要满足eco=1,eco=2,eco=3总而言之,就是找到max(ldate)然后再找里面有eco=1,eco=2,eco=3的纪录
    如果不是都有,那么不算合格的max(ldate)。
      

  5.   

    猜测楼住的数据
    create table test(
    id varchar(20),
    ldate number,
    eco number
    )
    id idate eco
    1   1     1
    1   10    2
    1   123   3
    2    232  1
    2    23   2出来的数据是 123select id,max(idate) from test 
    group by id
    having count( decode(eco,1,1,null) )>0 and count( decode(eco,2,1,null) )>0 and count( decode(eco,3,1,null) )>0 
      

  6.   

    楼住描述问题要描述清楚。
    表达不出来的可以用数据说话表结构
    create table test(
    id varchar(20),
    ldate number,
    eco number

    现有数据
    id idate eco
    1   1     1
    1   10    2
    1   123   3
    2    232  1
    2    23   2 
    期望结果
    id idate 
    1   123   
    ----------------------------
    以后楼住问问题按照这种格式贴,一般不会有问题了。纯文字的表达不清楚的
    我有时间才会和楼住这样废话的,很多人不是这么有空的
      

  7.   

    id  ldate  eco
    1   10     1
    1   10     2
    2   8      1
    2   8      2
    2   8      3
    3   6      1
    3   6      2
    3   6      3我希望能够找到的ldate=8,虽然ldate=10比ldate=8更大,但是不能保证eco=1,eco=2,eco=3都有不好意思啊,我没描述清楚,所以用表来说明了
      

  8.   

    前面有啊!楼住不看别人回复的啊?select id,max(idate) from test 
    group by id
    having count( decode(eco,1,1,null) )> 0 and count( decode(eco,2,1,null) )> 0 and count( decode(eco,3,1,null) )> 0 有修改楼住自己修改去,不回答了
      

  9.   

    多谢多谢,我第一次上CSDN发帖,实在不太清楚谢谢你的耐心。