Question

access sql max date max sequence

Asked by: toni_

Hi I need to return the latest Job Typ Description and Job Step Desc in an access query based on the Pay Str Date and the sequence number. So looking at the attacment data i should be returning Combo Welder, J/M II. I have a partial query below but i can not figure out how to return the info i need.
Thanks

SELECT tblEMPData.Number, tblEMPData.Surname, tblEMPData.Name, tblEMPData.Status, tblEMPData.Site, tblEmpProjectHistory.[Job Typ Description 1], tblEmpProjectHistory.[Job Step Description 1], tblEmpProjectHistory.[Sequence Number]
FROM tblEMPData LEFT JOIN (SELECT A.[Address Number], A.[Job Typ Description 1], A.[Job Step Description 1], A.[Sequence Number]
FROM tblEmpProjectHistory as A
WHERE A.[Pay Str Date] = (SELECT Max(B.[Pay Str Date]) FROM tblEmpProjectHistory B WHERE B.[Address Number] = A.[Address Number]))  AS tblEmpProjectHistory ON tblEMPData.[Number] = tblEmpProjectHistory.[Address Number]
ORDER BY tblEMPData.Surname, tblEMPData.Name;

                                  
1:
2:
3:
4:
5:

Select allOpen in new window

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2009-01-24 at 16:38:06ID24080906
Topics

Access Coding/Macros

,

SQL Query Syntax

Participating Experts
3
Points
0
Comments
14

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. order by desc for expression
    hi, i've got an expression: =[Contact Log].Form![To Do Listing Subform].Form!ToDoDate i need to show the most recent date in this text box i was thinking something like =Max([Contact Log].Form![To Do Listing Subform].Form!ToDoDate) or Desc([Contact Log].Form![To Do Listing...
  2. Regarding Sequences
    SQL> desc all_sequences Name Null? Type ----------------------------------------------------- -------- ------------------------------------ SEQUENCE_OWNER NOT NULL VARCHAR2(30) S...
  3. max value of a sequence
    Hi, can someone please let me know the max value a sequence can grow upto in Oracle 6i developer? has thsi changed in tha later versions? if so how much did it get increased to? Thanks
  4. STR_REPLACE and STRRPOS
    Hi I have a string of names which looks something like this: alex,sam,james,matthew what i want, is to display that string like this: Alex, Sam, James & Matthew so ive replaced all of the commas with comma-spaces, and capitalised all of their names using the following...

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: jamesguPosted on 2009-01-24 at 18:19:03ID: 23459322

try this,

if you want information from tblEmpProjectHistory, join the table to tblEMPData

SELECT tblEMPData.Number, tblEMPData.Surname, tblEMPData.Name, tblEMPData.Status, tblEMPData.Site
FROM tblEMPData
where exists ( select 1 from (
	select top 1 *
	from tblEmpProjectHistory
	where tblEmpProjectHistory.[Address Number] = A.[Address Number]
	order by [Pay Str Date], [Sequence Number]
) BB
where Number = BB.[Address Number]

                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:

Select allOpen in new window

 

by: toni_Posted on 2009-01-24 at 18:41:39ID: 23459374

thanks for the reply. I am getting a syntax error and am not sure where the error is(i have tried placing another parenthesis right before BB). But just to be clear, i am doing a left join because an employee may not have any information in employee history. I need the most recent .Job Typ Description 1 and Job Step Description 1 for an employee found in the tblEmpProjectHistory - my issue is that both the date and the sequence number determine the most recent entry in tblEmpProjectHistory- I know i have done this a long time ago but somehow i just can not figure out the syntax

 

by: Sharath_123Posted on 2009-01-24 at 18:43:58ID: 23459380

you need a parenthesis after BB. check this.

SELECT tblEMPData.Number, tblEMPData.Surname, tblEMPData.Name, tblEMPData.Status, tblEMPData.Site
FROM tblEMPData
where exists ( select 1 from (
	select top 1 *
	from tblEmpProjectHistory
	where tblEmpProjectHistory.[Address Number] = A.[Address Number]
	order by [Pay Str Date], [Sequence Number]
) BB )
where Number = BB.[Address Number]
                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:

Select allOpen in new window

 

by: toni_Posted on 2009-01-24 at 18:49:14ID: 23459390

still get an error as attached

 

by: Sharath_123Posted on 2009-01-24 at 18:57:23ID: 23459406


Can you provide the columns of tblEMPData and tblEmpProjectHistory tables and some sample data, expected result if possible.

 

by: gnoonPosted on 2009-01-24 at 19:01:15ID: 23459417

Try this

SELECT tblEMPData.Number, tblEMPData.Surname, tblEMPData.Name,
        tblEMPData.Status, tblEMPData.Site, tblEmpProjectHistory.[Job Typ Description 1],
        tblEmpProjectHistory.[Job Step Description 1], tblEmpProjectHistory.[Sequence Number]
FROM tblEMPData INNER JOIN (
    (SELECT tblEmpProjectHistory.[Address Number], INNER1.[Pay Str Date Max],
        Max(tblEmpProjectHistory.[Sequence Number]) AS [Sequence Number Max]
     FROM tblEmpProjectHistory INNER JOIN
            (SELECT [Address Number], MAX([Pay Str Date]) AS [Pay Str Date Max]
             FROM tblEmpProjectHistory GROUP BY [Address Number]) AS INNER1
        ON (tblEmpProjectHistory.[Pay Str Date] = INNER1.[Pay Str Date Max])
        AND (tblEmpProjectHistory.[Address Number] = INNER1.[Address Number])
     GROUP BY tblEmpProjectHistory.[Address Number], INNER1.[Pay Str Date Max]) AS INNER2 INNER JOIN
     tblEmpProjectHistory ON (INNER2.[Sequence Number Max] = tblEmpProjectHistory.[Sequence Number])
        AND (INNER2.[Pay Str Date Max] = tblEmpProjectHistory.[Pay Str Date])
        AND (INNER2.[Address Number] = tblEmpProjectHistory.[Address Number])) 
     ON tblEMPData.[Address Number] = tblEmpProjectHistory.[Address Number]

                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:

Select allOpen in new window

 

by: jamesguPosted on 2009-01-24 at 19:26:50ID: 23459482

forgot a parenthesis after where condition

SELECT tblEMPData.Number, tblEMPData.Surname, tblEMPData.Name, tblEMPData.Status, tblEMPData.Site
FROM tblEMPData
where exists ( select 1 from (
        select top 1 *
        from tblEmpProjectHistory
        where tblEmpProjectHistory.[Address Number] = A.[Address Number]
        order by [Pay Str Date], [Sequence Number]
        ) BB
      where Number = BB.[Address Number]
)

                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:

Select allOpen in new window

 

by: toni_Posted on 2009-01-24 at 19:50:44ID: 23459527

gnoon - there is too many results
james - it can't find A.[address number]. I have changed it to A.[number] and tblEmpDATa.[Number] and i still get the same error.
Sharath - I will attach an example DB tomorrow. Thanks for your help

 

by: jamesguPosted on 2009-01-24 at 20:04:25ID: 23459575

try this, or i'll test it again your db one you upload it

/* get top 1 history for each address */
SELECT b.*
FROM tblEmpProjectHistory b
where exists ( select 1 from (
                      select top 1 *
                      from tblEmpProjectHistory c
                      where c.[Address Number] = a.[Number]
                      order by [Pay Str Date], [Sequence Number]
               ) BB
          where [Address Number] = BB.[Address Number]
          and   [Pay Str Date] = BB.[Pay Str Date]
          and   [Sequence Number] = BB.[Sequence Number]
      )
      
/* get top 1 history for each address and EMP data*/
select a.*, c.*
from tblEMPData a inner join 
(
    SELECT b.*
    FROM tblEmpProjectHistory b
    where exists ( select 1 from (
                          select top 1 *
                          from tblEmpProjectHistory c
                          where c.[Address Number] = a.[Number]
                          order by [Pay Str Date], [Sequence Number]
                   ) BB
              where [Address Number] = BB.[Address Number]
              and   [Pay Str Date] = BB.[Pay Str Date]
              and   [Sequence Number] = BB.[Sequence Number]
          )      
) c
on a.[Number] = c.[Address Number]  

                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:

Select allOpen in new window

 

by: toni_Posted on 2009-01-26 at 07:28:39ID: 23467391

Thanks James. The query looks right to me but it is not finding a.[Number] for some reason. I have attached a sample DB. I realize there are duplicate records in the DB as I have removed additional columns and yes the DB could be normalized.

 

by: gnoonPosted on 2009-01-27 at 06:21:34ID: 23476525

The only problem of your database is [Pay Str Date] and [Sequence Number] are not enough to be primary key of history. There are duplicated records.

However, the following queries may useful for you.

-- 1. Get the most recent reference number of history based on Pay Str Date and Sequence Number
--    (reference number = convert to number(Pay Str Date) + Sequence Number)
SELECT Max(CLng([Pay Str Date])+[Sequence Number])
FROM tblEmpProjectHistory
 
-- 2. Get history information of the most recent reference number
SELECT h.*
FROM tblEmpProjectHistory h
WHERE (CLng([Pay Str Date])+[Sequence Number]) In 
    (SELECT Max(CLng([Pay Str Date])+[Sequence Number])
     FROM tblEmpProjectHistory)
 
-- 3. Get EMP data and the most recent history info
SELECT d.*, h.[Job Typ Description 1], h.[Job Step Description 1], h.[Sequence Number]
FROM tblEMPData d LEFT JOIN (
    SELECT *
    FROM tblEmpProjectHistory
    WHERE (CLng([Pay Str Date])+[Sequence Number]) In 
        (SELECT Max(CLng([Pay Str Date])+[Sequence Number])
         FROM tblEmpProjectHistory)
) h ON d.[Number] = h.[Address Number]
                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:

Select allOpen in new window

 

by: toni_Posted on 2009-01-27 at 07:24:22ID: 23477263

Unfortunately, the query you provided returns only ONLY project history for one employee. This is because of this line :
WHERE (CLng([Pay Str Date])+[Sequence Number]) In
        (SELECT Max(CLng([Pay Str Date])+[Sequence Number])
         FROM tblEmpProjectHistory)
- Here you are only ever returning the MAX pay Str Date + Sequence Number from the DB - we would need to return the max per employee.
If it helps lets assume that the primary key in tblEmpProjectHistory is ([AddressNumber], [Pay Str Date] and [Sequence Number]) - i can then do a group by to get only one row from project history based on these numbers.
I know a query like this is possible because many years ago i remember seeing a query return the latest detail information per customer based on ID and Sequence number. I just dont remember where to find it.

 

by: toni_Posted on 2009-01-27 at 07:52:50ID: 23477622

I finally figured it out. Here it is. Thanks for the help.

Select X.[Number] From tblEMPData X
Left Join
(
SELECT TOP 1 A.[Address Number], A.[Job Typ Description 1], A.[Job Step Description 1], A.[Sequence Number]
FROM tblEmpProjectHistory AS A
WHERE [Sequence Number] = (SELECT Max([Sequence Number]) from tblEmpProjectHistory B WHERE A.[Address Number] = B.[Address Number]) AND [Pay Str Date] = (SELECT Max([Pay Str Date]) from tblEmpProjectHistory C WHERE A.[Address Number] = C.[Address Number])
Group By A.[Address Number], A.[Job Typ Description 1], A.[Job Step Description 1], A.[Sequence Number]
) Y
on X.[Number] = Y.[Address Number]
                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:

Select allOpen in new window

 

by: jamesguPosted on 2009-02-01 at 06:00:09ID: 23521301

@toni_, your solution does not work in this situation:

for the same [Address Number], record1 has a max [Sequence Number], and a different record2 has the  Max([Pay Str Date]).

if you don't have this scenario, you may use either condition instead of both

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...