qq_笑_17
SELECT *FROM tab t1WHERE 员工编号||T0_CHAR日期1)|| T0_CHAR(日期2)IN (SELECT 员工编号||T0_CHAR(日期1)|| T0_CHAR(MAX(日期2))FROM tabWHERE 员工编号 = t1.员工编号AND 日期1 = t1.日期1GROUP BY 员工编号, 日期1)看你这个应该是ORACLE,是取得日期最小的对应的时间最大记录吧,如果这样的话,可以这样写找出日期最小的记录。...SELECT 员工编号, 日期1, 日期2 FROM TAB t1WHERE NOT EXISTS (SELECT 1 FROM tabWHERE t1.员工编号 = 员工编号 AND t1.日期1 > 日期1然后按照日期2降序排列,取得第一行值,为什么不可以用ROWNUM呢?用这个快很多哦。。如果不用rownum就要这样整了。。。SELECT 员工编号, 日期1, 日期2from ((SELECT 员工编号, 日期1, 日期2 ROW_NUMBER() OVER(ORDER BY 日期2 DESC) rkFROM (SELECT 员工编号, 日期1, 日期2FROM TAB t1WHERE NOT EXISTS (SELECT 1 FROM tabWHERE t1.员工编号 = 员工编号 AND t1.日期1 > 日期1) tWHERE rk = 1 ) t2