2 回答
TA贡献1818条经验 获得超7个赞
SELECT *
FROM tab t1
WHERE 员工编号||T0_CHAR日期1)|| T0_CHAR(日期2)
IN (SELECT 员工编号||T0_CHAR(日期1)|| T0_CHAR(MAX(日期2))
FROM tab
WHERE 员工编号 = t1.员工编号
AND 日期1 = t1.日期1
GROUP BY 员工编号, 日期1)
看你这个应该是ORACLE,是取得日期最小的对应的时间最大记录吧,如果这样的话,可以这样写
找出日期最小的记录。...
SELECT 员工编号, 日期1, 日期2 FROM TAB t1
WHERE NOT EXISTS (SELECT 1 FROM tab
WHERE t1.员工编号 = 员工编号 AND t1.日期1 > 日期1
然后按照日期2降序排列,取得第一行值,为什么不可以用ROWNUM呢?用这个快很多哦。。
如果不用rownum就要这样整了。。。
SELECT 员工编号, 日期1, 日期2
from ((SELECT 员工编号, 日期1, 日期2 ROW_NUMBER() OVER(ORDER BY 日期2 DESC) rk
FROM (SELECT 员工编号, 日期1, 日期2
FROM TAB t1
WHERE NOT EXISTS (SELECT 1 FROM tab
WHERE t1.员工编号 = 员工编号 AND t1.日期1 > 日期1) t
WHERE rk = 1 ) t2
TA贡献1848条经验 获得超6个赞
SELECT * FROM TB T WHERE 日期2=(SELECT MAX(日期2) FROM TB WHERE 员工编号=T.员工编号)
添加回答
举报