猿问

为什么使用GROUP BY,不能用rownum?求解释?

员工编号 日期1 日期2
000100 2010-6-7 2010-6-1 09:05:00
000100 2010-6-6 2010-6-1 11:05:00
000100 2010-6-6 2010-6-1 11:10:00
现在想取最后一条,大家帮帮忙啊。

慕神8447489
浏览 502回答 2
2回答

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

慕勒3428872

SELECT * FROM TB T WHERE 日期2=(SELECT MAX(日期2) FROM TB WHERE 员工编号=T.员工编号)
随时随地看视频慕课网APP
我要回答