在某一个表中,比方这个表的名字是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)不行希望各位能够指教。多谢多谢。
调试欢乐多
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)这句就行了)
你怎么确定一行记录的?
我希望找最大值的条件是eco=1,eco=2,eco=3中的最大值 这句话表示:有某个列中的某个值符合 eco=1,eco=2,eco=3 ,至少有3条记录。这个列不会是你前面说的ldate,是的话就没max了
from (select ldate from grib where eco in(1,2,3))grib_linshi;
这个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)。
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
表达不出来的可以用数据说话表结构
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
----------------------------
以后楼住问问题按照这种格式贴,一般不会有问题了。纯文字的表达不清楚的
我有时间才会和楼住这样废话的,很多人不是这么有空的
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都有不好意思啊,我没描述清楚,所以用表来说明了
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 有修改楼住自己修改去,不回答了