示例数据:
2015-10-09 17:06:54
2015-01-05 11:04:12
2015-01-05 11:04:13
2015-01-09 14:52:19
嗨,我正在尝试使用条件获取日期+时间记录列表:如果日期相同,请获取最早的记录。
我知道这可以通过substr()轻松完成到日期,但我也需要时间。
请参阅上面的数据:我不希望第3条记录失效,因为它是重复的日期,但是以后的时间。
我该怎么做?非常感谢你的帮助!
答案 0 :(得分:1)
在MS SQL 2005+
中,您可以尝试:
SELECT *
FROM (
SELECT *,
RANK() OVER(PARTITION BY CAST(DateTime_Column AS DATE) ORDER BY DateTime_Column DESC) AS R
FROM Your_Table) AS Tb
WHERE R = 1
如果您想每天选择1行,可以使用ROW_NUMBER()
代替RANK()
在Oracle中,您可以将CAST(DateTime_Column AS DATE)
更改为TRUNC(DateTime_Column)
答案 1 :(得分:0)
这将显示特定日期的后期date_time行。
SELECT T1.*
FROM
table T1 INNER JOIN table T2
ON DATE(T1.date_time) = DATE(T2.date_time)
AND T1.date_time > T2.date_time GROUP BY DATE(T1.date_time)
希望这会有所帮助..