SQL Access - 仅保留最近时间戳的记录

时间:2014-04-03 20:12:24

标签: sql ms-access-2010

我的表格如下所示:

Time    Name    Cust_ID   Num_Calls   Num_Orders

12.00   ABC     100       20           10

12.25   PQR     102       23           12

12.30   ABC     100       26           15

01.00   ABC     100       26           18

02.00   PQR     102       23           14

04.00   PQR     102       25           20

如何删除每个“Name& Cust_ID”的早期记录并保留最新记录。当我通过Access数据库运行它们时,记录中的其他字段可能会发生变化,但名称和ID保持不变。

我在一天结束时的输出应该是:

Time    Name    Cust_ID   Num_Calls   Num_Orders

01.00   ABC     100       26           18

04.00   PQR     102       25           20

2 个答案:

答案 0 :(得分:0)

我认为如果你的cust_id是唯一的,你应该把它作为表中的主键。 然后,只要有新条目,首先检查当前cust_id是否已存在。 如果是,请更新表中的条目。 否则插入。

答案 1 :(得分:0)

试试这个......

这可以根据max(time)为您提供最新记录,您可以删除此套装的补充。

SELECT * FROM YOUR_TABLE A
INNER JOIN 
( SELECT MAX(time) MAX_time
, NAME , CUST_ID
FROM YOUR_TABLE
GROUP BY 
NAME , CUST_ID )B
ON A.NAME=B.Name
and A.CUST_ID=B.CUst_ID
and A.time =B.max_time

所以你会删除以下记录

DELETE FROM YOUR_TABLE
WHERE EXISTS
(SELECT * FROM YOUR_TABLE B
 WHERE TIME <>( SELECT MAX(time) FROM YOUR_TABLE C WHERE B.NAME=C.Name
and C.CUST_ID=B.CUst_ID )
AND A.NAME=B.Name
and A.CUST_ID=B.CUst_ID)