Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

Remove Duplicates based on Date Added

Posted on 2011-09-14
2
Medium Priority
?
408 Views
Last Modified: 2012-08-14
I have an Access Table named tbl_TestAll  that I need to delete duplicates based on the Date Added date.

DtA is the Date Added field

The column names are liks such.
Cha, Allo, Tar, Cons, Opt, Des, Pct, Len, Cur, Com, DtA, For, Mar.

The rows are as such:

Row 1 Ca1, Allo1, Tar2, Cons1, Opt 1, Des1, Pct 3, Len1, Cur2, Com 2,  7/14//2001, For1, Mar1
Rpw 2 Ca1, Allo1, Tar3, Cons1, Opt 1, Des2, Pct 4, Len2, Cur3, Com 2,  9/14/2001,  For1, Mar1

So basically, Cha, Allo, Cons, Opt, For, MarI are duplicated in both rows.

I need a query that will delete Row 1, and keep Row 2 based on the latest date.
0
Comment
Question by:mato01
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 60

Expert Comment

by:Kevin Cross
ID: 36539430
mato01,

In MS Access, it may be easiest to INSERT the rows you want into a new table, DELETE all rows, then put back the rows you want. You can try once you have done the insert into new table to DELETE where there is no match, so guess that is the key...

So, what I would try is to build a query that gets you the MAX DtA column that corresponds to Cha, Allo, Cons, Opt, For, MarI combinations.
SELECT Cha, Allo, Cons, Opt, For, MarI, MAX(DtA) MAX_DtA
FROM tbl_TestAll
GROUP BY Cha, Allo, Cons, Opt, For, MarI

Open in new window


If that looks like what you want, you can then JOIN that back to your original data, you may have to put it in an intermediate query first, but try:
SELECT t1.*
FROM tbl_TestAll AS t1
JOIN (
   SELECT Cha, Allo, Cons, Opt, For, MarI, MAX(DtA) MAX_DtA
   FROM tbl_TestAll
   GROUP BY Cha, Allo, Cons, Opt, For, MarI
) AS tm
   ON tm.Cha = t1.Cha
   AND tm.Allo = t1.Allo
   AND tm.Cons = t1.Cons
   AND tm.Opt = t1.Opt
   AND tm.For = t1.For
   AND tm.MarI = t1.MarI
   AND tm.MAX_Dta = t1.Dta
;

Open in new window


That should get you the records you want. Let me know if you have any questions from there as it is just a straight-forward, INSERT and DELETE operation.

And I can't remember if this works in MS Access, but you can try:
DELETE t1.*
FROM tbl_TestAll AS t1
JOIN (
   SELECT Cha, Allo, Cons, Opt, For, MarI, MAX(DtA) MAX_DtA
   FROM tbl_TestAll
   GROUP BY Cha, Allo, Cons, Opt, For, MarI
) AS tm
   ON tm.Cha = t1.Cha
   AND tm.Allo = t1.Allo
   AND tm.Cons = t1.Cons
   AND tm.Opt = t1.Opt
   AND tm.For = t1.For
   AND tm.MarI = t1.MarI
   AND tm.MAX_Dta <> t1.Dta
;

Open in new window


The change is not equal Dta.
0
 
LVL 1

Accepted Solution

by:
Milewskp earned 1000 total points
ID: 36555312
Hi mato,
An aggregate query (call it Qry1) with MaxOfDtA will give you the rows with the latest dates. You could then base a delete qry on tbl_TestAll  and Qry1.
0

Featured Post

Tech or Treat!

Submit an article about your scariest tech experience—and the solution—and you’ll be automatically entered to win one of 4 fantastic tech gadgets.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Microsoft Access is a place to store data within tables and represent this stored data using multiple database objects such as in form of macros, forms, reports, etc. After a MS Access database is created there is need to improve the performance and…
One of the most important things in an application is the query performance. This article intends to give you good tips to improve the performance of your queries.
Do you want to know how to make a graph with Microsoft Access? First, create a query with the data for the chart. Then make a blank form and add a chart control. This video also shows how to change what data is displayed on the graph as well as form…
This lesson discusses how to use a Mainform + Subforms in Microsoft Access to find and enter data for payments on orders. The sample data comes from a custom shop that builds and sells movable storage structures that are delivered to your property. …

610 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question