2013-06-24 111 views
1

說值中的一予具有值:刪除對基於日期

Reference  Class Timestamp 
XXHAG70  11  2013-05-07 14:29:59.820 
XXHAG70  11  2013-05-07 14:33:19.780 
XXHAG70  17  2013-05-07 14:30:19.930 
XXHAG70  17  2013-05-07 14:33:44.690 
PAF7010  06  2008-11-06 10:25:07.140 
PAF7010  06  2009-02-27 12:56:11.420 

每個類都有一個重複的值,因此被配對。我想爲每個參考中的每個類選擇最早的時間戳。

回答

0

要獲取最古老的每個類/參考,使用MINGROUP BY

SELECT Reference, Class, MIN(Timestamp) 
FROM myTable 
GROUP BY Reference, Class 
0

你可以使用MIN

SELECT MIN(TimeStamp) 
FROM YourTable 
WHERE Class IN (SELECT DISTINCT Class From YourTable) 
1

你可以使用ROW_NUMBER函數。

SELECT Reference , 
     Class , 
     Timestamp 
FROM (SELECT Reference , 
        Class , 
        Timestamp , 
        ROW_NUMBER() OVER (PARTITION BY Reference, Class ORDER BY Timestamp) AS rnum 
      FROM  MyTable 
     ) A 
WHERE rnum = 1; 
+0

應該是'分區的參考,Class',而且你想保留最古老的行,所以試試'哪裏rnum> 1' – Andomar

+0

你是對的Andomar,我糾正它。 – souplex

0

這將刪除所有,但每(reference, class)最古老的行:

delete from t1 
from (
     select row_number() over (
        partition by reference, class 
        order by Timestamp desc) rn 
     ,  * 
     from YourTable 
     ) t1 
where t1.rn > 1 

Live example at SQL Fiddle.