sql语句,成功就给分

求一个sql语句,在线等,成功就给分。表1:table_residname......//列名onename1twoname2threename3表2:table_

求一个sql语句,在线等,成功就给分。
表1:table_res
id     name  ......//列名
one    name1
two    name2
three  name3

表2:table_value

id            time             value    //列名
three    2013-09-16 10:55       33%
one      2013-09-16 10:56       22%
two      2013-09-16 09:55       35%
three    2013-09-16 11:53       43%
two      2013-09-16 10:38       33%
one      2013-09-16 12:55       17%


我想要的效果就是 
id            time               value  //列名
three    2013-09-16 11:53         43%
one      2013-09-16 12:55         17%
two      2013-09-16 10:38         33%
即id 不能重复,而且time为离现在时间最近的time,value 查出来。
求高手帮忙写个sql语句,谢谢了。 
[解决办法]



with table_res as
(
     select 'one' id ,'name1' name from dual union all
     select 'two' id ,'name2' name from dual union all
     select 'three' id ,'name3' name from dual
),table_value as
(
     select 'three' id ,'2013-09-16 10:55' time,'33%' value from dual union all    
     select 'one' id ,'2013-09-16 10:56' time,'22%' value from dual  union all


     select 'two' id ,'2013-09-16 19:55' time,'35%' value from dual  union all
     select 'three' id ,'2013-09-16 11:53' time,'43%' value from dual  union all
     select 'two' id ,'2013-09-16 10:38' time,'33%' value from dual  union all
     select 'one' id ,'2013-09-16 12:55' time,'17%' value from dual
)

select id,time,value
from
(
select a.id,b.time,b.value,
       row_number() over(partition by a.id order by b.time desc) rn
from table_res a left join table_value b on a.id = b.id
)
where rn = 1


[解决办法]
with ax as(
select 'three' id,  '2013-09-16 10:55'  time,     '33%' value from dual union all
select 'one'   id,  '2013-09-16 10:56'   time ,  '22%'   value from dual union all
select 'two'   id,  '2013-09-16 09:55'  time,    '35%'  value from dual union all
select 'three' id, '2013-09-16 11:53'   time ,   '43%'  value from dual union all
select 'two'   id,  '2013-09-16 10:38'   time,    '33%'  value from dual union all
select 'one'   id,  '2013-09-16 12:55'   time ,   '17%'  value from dual
)
select id,max(time),max(value) from ax group by id


不知道是不是你要的结果
不是。你现在的value是取的是最大值,我要的效果是这个值就是那个sampletime列的值。

那你这样吧:
with ax as(
select 'three' id,  '2013-09-16 10:55'  time,     '33%' value from dual union all
select 'one'   id,  '2013-09-16 10:56'   time ,  '22%'   value from dual union all


select 'two'   id,  '2013-09-16 09:55'  time,    '35%'  value from dual union all
select 'three' id, '2013-09-16 11:53'   time ,   '43%'  value from dual union all
select 'two'   id,  '2013-09-16 10:38'   time,    '33%'  value from dual union all
select 'one'   id,  '2013-09-16 12:55'   time ,   '17%'  value from dual
)
select id,time,value from ax where id
[解决办法]
time in(
select id
[解决办法]
max(time) time from ax group by id
)