Solved

Access 2010 Query to locate most recent item only, when 1 is expected each month

Posted on 2014-01-02
9
290 Views
Last Modified: 2014-01-02
I receive statements each month and I am trying to determine if a statement did not come in.  Example: account 12345 last statement was November 2013, so I am missing a December statement.  

I am trying to locate the newest statement received only but my query gives me all of the statement dates, not just the newest.

My Fields:
AccountNumber
StatementDate
ClientName
0
Comment
Question by:NNiicckk
  • 3
  • 3
  • 3
9 Comments
 
LVL 6

Expert Comment

by:ButlerTechnology
ID: 39751210
Try this:
Select * 
from table a
where StatementDate = (Select max(Statmentdate) from table b where accountnumber = a.accountnumber)

Open in new window


The results should be the last statement for each customer.
0
 
LVL 120

Expert Comment

by:Rey Obrero (Capricorn1)
ID: 39751253
try this


select a.*
from NameOfTable as a
inner join (select max(b.StatementDate) as MaxDate, b.AccountNumber
           from NameOftable as b
           group by b.AccountNumber ) as c
on a.StatementDate=c.maxDate and  a.AccountNumber =  c.AccountNumber
0
 

Author Comment

by:NNiicckk
ID: 39751347
Sorry with regard to field name sin the query,

The fields AccountNumber and Client Name come from the table Accounts.  The field StatementDate comes from the table Statements.
0
Enterprise Mobility and BYOD For Dummies

Like “For Dummies” books, you can read this in whatever order you choose and learn about mobility and BYOD; and how to put a competitive mobile infrastructure in place. Developed for SMBs and large enterprises alike, you will find helpful use cases, planning, and implementation.

 
LVL 6

Expert Comment

by:ButlerTechnology
ID: 39751359
Try this one with the new table names:
Select *
from Accounts a inner join Statements S on a.accountNumber = s.AccountNumber
where s.statementDate = (Select max(StatementDate) from statements where accountNumber = a.Accountnumber

Open in new window

0
 
LVL 120

Expert Comment

by:Rey Obrero (Capricorn1)
ID: 39751424
try this


select a.*
from Accounts as a
inner join (select max(b.StatementDate) as MaxDate, b.AccountNumber
           from Statements as b
           group by b.AccountNumber ) as c
on a.AccountNumber =  c.AccountNumber
0
 

Author Comment

by:NNiicckk
ID: 39751503
The max(StatementDate) gives me the max statement date in the system. Example: 12/20

I need the max statement date per each account #.

This is my SQL:

SELECT Accounts.AccountNumber AS Account, Statements.StatementDate AS [Last Statement], Accounts.ClientName AS Client, Accounts.Payee, Accounts.Status
FROM Accounts INNER JOIN Statements ON Accounts.[AccountNumber] = Statements.[AccountID]
WHERE Statements.[StatementDate] = (Select max(StatementDate) FROM Statements where AccountNumber = Accounts.AccountNumber)


EXAMPLE OF OUTPUT:  This would show me missing 2 December statements

Account      Last Statement      Client      Payee      Status
12345      11-Nov-13      aaaa      10101      Active
45678      30-Nov-13      bbbb      10102      Active
159623      15-Dec-13      cccc      10103      Closed
111422      30-Dec-13      dddd      10104      Active
0
 
LVL 6

Accepted Solution

by:
ButlerTechnology earned 250 total points
ID: 39751514
I think you nee to make a minor change to sub query:
(Select max(StatementDate) FROM Statements where AccountID= Accounts.AccountNumber)

Open in new window

instead of accountnumber = accountnumber
0
 
LVL 120

Assisted Solution

by:Rey Obrero (Capricorn1)
Rey Obrero (Capricorn1) earned 250 total points
ID: 39751592
try this


select a.AccountNumber as Account, c.MaxDate as [Last Statement], a.ClientName AS Client, a.Payee, a.Status
from Accounts as a
inner join (select max(b.StatementDate) as MaxDate, b.AccountID
           from Statements as b
           group by b.AccountID ) as c
on a.AccountNumber =  c.AccountID
0
 

Author Closing Comment

by:NNiicckk
ID: 39751858
Thank You.
0

Featured Post

Simplifying Server Workload Migrations

This use case outlines the migration challenges that organizations face and how the Acronis AnyData Engine supports physical-to-physical (P2P), physical-to-virtual (P2V), virtual to physical (V2P), and cross-virtual (V2V) migration scenarios to address these challenges.

Question has a verified solution.

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

Suggested Solutions

Introduction The Visual Basic for Applications (VBA) language is at the heart of every application that you write. It is your key to taking Access beyond the world of wizards into a world where anything is possible. This article introduces you to…
As tax season makes its return, so does the increase in cyber crime and tax refund phishing that comes with it
Familiarize people with the process of utilizing SQL Server views from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Microsoft Access…
In Microsoft Access, when working with VBA, learn some techniques for writing readable and easily maintained code.

776 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