------解决方案-------------------- select * from table where time||name in( select max(time)||name from table group by name )
------解决方案--------------------
SQL code
--假设你的表名T, 张三,李四人名列是name, 时间列是tdate
select * from
(select t.*, row_number() over (partition by name order by tdate) rn from t)
where rn = 1;
--这样查出来是时间最早的数据,如果要最晚的,
select * from
(select t.*, row_number() over (partition by name order by tdate desc) rn from t)
where rn = 1;
------解决方案--------------------
------解决方案-------------------- select max(time)||name from table group by name 这个子查询先根据name列分组,然后再将分组中最大的时间和name列组合起来。这样就形成了一个由name和time组合成的字符串了,例如:20121009ludwik。 那么这个子查询查询出来的结果就是这样格式的一个结果集。 然后再去查询全表,对比条件也就是time+name这样一个组合形式。