SQL按日期选择不同的行

时间:2014-01-17 17:23:29

标签: sql oracle select group-by

我有一个名为CLOCK的表,其中包含2列ID,这是一个数字,而CLOCK_IN是一个日期。 ID列已重复编号,我想选择具有最新CLOCK_IN的ID。

就像说该表有以下数据:

+--+---------+
|ID|CLOCK_IN |
+--+---------+
|02|1/14/2013|
+--+---------+
|04|1/14/2013|
+--+---------+
|02|1/20/2013|
+--+---------+
|03|2/13/2013|
+--+---------+

我想获得第2,3,4行,因为它们是该ID的最新clock_ins。

3 个答案:

答案 0 :(得分:2)

SELECT ID, MAX(CLOCKIN)
FROM CLOCK
GROUP BY ID

请注意,您的列ID不能单独作为PRIMARY KEY(在您的数据示例中),我想这两列会使PRIMARY KEY复合。

答案 1 :(得分:2)

group by和max应该适合你。

SELECT ID, MAX(CLOCK_IN)
FROM CLOCK
GROUP BY ID

答案 2 :(得分:0)

试试这个

SELECT * FROM
(
 SELECT
 ROW_NUMBER() OVER (ORDER BY  Clock_IN ASC) AS RN,ID,Clock_IN
 From Clock 
) AS Temp
WHERE RN = 1

希望这能帮到你