我的货币汇率表:
T_RATE_ID T_INPUTDATE T_INPUTTIME T_SINCEDATE
1 27.12.2012 22:41:01 28.12.2012
1 27.12.2012 23:45:21 28.12.2012
1 28.12.2012 21:23:11 29.12.2012
1 28.12.2012 21:40:01 29.12.2012
1 29.12.2012 22:33:49 30.12.2012
1 29.12.2012 23:47:19 30.12.2012
如何选择此日期的最长日期和最长时间?
简单SELECT MAX(t_sincedate), MAX(t_inputdate), MAX(t_inputtime)
返回所有记录中的最长时间(23:47:19)
我想获得以下结果:
1 27.12.2012 23:45:21 28.12.2012
1 28.12.2012 21:40:01 29.12.2012
1 29.12.2012 23:47:19 30.12.2012
UPD : 我有一个搜索率的日期。如果这个日期没有费率,我会选择最近的日期。
所以在第i条where t_sincedate <= sysdate
答案 0 :(得分:1)
根据您提供的结果,您实际上并不想要最大日期,而是需要最大日期的不同日期。
SELECT
T_RATE_ID,
t_sincedate,
MAX(t_inputdate),
MAX(t_inputtime)
FROM
<TABLE NAME>
where t_sincedate <= sysdate
GROUP BY
T_RATE_ID, t_sincedate
ORDER BY
T_RATE_ID, t_sincedate;
答案 1 :(得分:1)
试试这个:
SELECT T_RATE_ID, T_INPUTDATE, T_INPUTTIME, T_SINCEDATE
FROM
(SELECT
*, ROW_NUMBER() OVER (PARTITION BY T_SINCEDATE ORDER BY T_INPUTDATE DESC, T_INPUTTIME DESC) rn
FROM YourTable
WHERE T_SINCEDATE<= sysdate) T
WHERE rn = 1
答案 2 :(得分:0)
select * from
(
select t.*,
ROW_NUMBER()
OVER (partition by T_SINCEDATE
ORDER BY T_INPUTDATE DESC,T_INPUTTIME DESC) rn
from t
) t1 where rn=1
答案 3 :(得分:0)
可能我没有理解问题的含义,但我尝试了。
select *
from t
where (t_inputdate, t_inputtime) in
(select t_inputdate, MAX(t_inputtime) from t group by t_inputdate)