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.員工編號)
添加回答
舉報