Solved

Query to get cumulative data

Posted on 2011-03-25
19
710 Views
Last Modified: 2013-11-29
Hello,

I have a table with the following structure, this is in MS Access 2007.

TicketNumber  Date
2343               01/01/2011
1234               01/02/2011
3422               01/4/2011
3423               01/4/2011
7423               02/4/2011
3523               02/6/2011
3513               02/6/2011
3923               03/4/2011

I am able to create a crosstab that would add up the NUMBER of tickets per date; then I take generate a graph using the cross tab and I get a nice simple bar chart displaying tickets/month, so, Jan - 4, Feb - 3, March  - 1

My question now is, I would like to GRAPH a cumulative chart,

It will display, 4 tickets for Jan, 4+3 tickets for Feb, and 4+3+1 tickets for March.

Thanks,
0
Comment
Question by:babble324
[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
  • 9
  • 6
  • 4
19 Comments
 
LVL 120

Expert Comment

by:Rey Obrero (Capricorn1)
ID: 35218328
select sum(iif(month(date)<2,1,0)) as Jan,sum(iif(month(date)<3,1,0)) as Feb,sum(iif(month(date)<4,1,0)) as Mar
from table
0
 

Author Comment

by:babble324
ID: 35219185
I need this done for years worth of data.
0
 
LVL 120

Expert Comment

by:Rey Obrero (Capricorn1)
ID: 35219274
how do you want the result look like?
0
How our DevOps Teams Maximize Uptime

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us. Read the use case whitepaper.

 

Author Comment

by:babble324
ID: 35219294
Jan --4
Feb --7
Mar --8
etc.
etc.

This will then be charted on al ine graph using Access Graph Objects.
0
 
LVL 120

Expert Comment

by:Rey Obrero (Capricorn1)
ID: 35219307
did you try the query posted above?
0
 

Author Comment

by:babble324
ID: 35220130
This will only work for 3 months. I need this for years' worth of data.
0
 
LVL 120

Expert Comment

by:Rey Obrero (Capricorn1)
ID: 35220230
then expand the query.
0
 
LVL 45

Expert Comment

by:aikimark
ID: 35223771
@babble324

should a month's cumulative sum be for all prior months or just the prior months in that calendar year?
0
 

Author Comment

by:babble324
ID: 35224136
All months that are in the query. Also note that some months may not be there, I.e no tickets issued in that month. So I just want a tally of whatever was queried. Thank you so much for your help.
0
 
LVL 45

Expert Comment

by:aikimark
ID: 35224241
I made a CumulativeSumProblem table and populated it with your posted data.

SELECT Year([TicketDate])*100+Month([TicketDate]) AS yyyymm, Count(CumulativeSumProblem.TicketNumber) AS CountOfTicketNumber, 
(Select Count(*) From CumulativeSumProblem As CS Where Year(CS.[TicketDate])*100+Month(CS.[TicketDate]) <= Year(CumulativeSumProblem.[TicketDate])*100+Month(CumulativeSumProblem.[TicketDate]) ) As CumulativeSum
FROM CumulativeSumProblem
GROUP BY Year([TicketDate])*100+Month([TicketDate]);

Open in new window

0
 

Author Comment

by:babble324
ID: 35224725
yep, that's exactly what i want.

Now, under the yyyymm field in the query, is there a way it can be formatted differently? basically, i would like to take this data and feed it into a ms access chart, it's not recognizing "201103" as a date.

Thanks again,


0
 
LVL 45

Expert Comment

by:aikimark
ID: 35226033
I guess you might try changing all these date values into the first of the month.

So this:
Year([TicketDate])*100+Month([TicketDate])

Open in new window


becomes this
DateSerial(Year([TicketDate]), Month([TicketDate], 1)

Open in new window

0
 

Author Comment

by:babble324
ID: 35226479
I get wrong number of arguments.


SELECT DateSerial(Year([TicketDate]), Month([TicketDate], 1)) AS yyyymm, Count(CumulativeSumProblem.TicketNumber) AS CountOfTicketNumber, 
(Select Count(*) From CumulativeSumProblem As CS Where Year(CS.[TicketDate])*100+Month(CS.[TicketDate]) <= Year(CumulativeSumProblem.[TicketDate])*100+Month(CumulativeSumProblem.[TicketDate]) ) As CumulativeSum
FROM CumulativeSumProblem
GROUP BY DateSerial(Year([TicketDate]), Month([TicketDate], 1));

Open in new window

0
 
LVL 45

Expert Comment

by:aikimark
ID: 35226565
it is a typo on my part.  there is a misplaced right parenthesis
DateSerial(Year([TicketDate]), Month([TicketDate]), 1)

Open in new window

0
 

Author Comment

by:babble324
ID: 35226591
It now says:

"You tried to execute a query that does not include the specified expression 'TicketDate' as part of an aggregate function"
0
 
LVL 45

Expert Comment

by:aikimark
ID: 35226627
please check that you corrected all instances of the typo.  If you still get the error message, then please post your SQL.
0
 

Author Comment

by:babble324
ID: 35226648
There you go.

SELECT DateSerial(Year([TicketDate]), Month([TicketDate]), 1) AS yyyymm, Count(CumulativeSumProblem.TicketNumber) AS CountOfTicketNumber, 
(Select Count(*) From CumulativeSumProblem As CS Where Year(CS.[TicketDate])*100+Month(CS.[TicketDate]) <= Year(CumulativeSumProblem.[TicketDate])*100+Month(CumulativeSumProblem.[TicketDate]) ) As CumulativeSum
FROM CumulativeSumProblem
GROUP BY DateSerial(Year([TicketDate]), Month([TicketDate]), 1);

Open in new window

0
 
LVL 45

Accepted Solution

by:
aikimark earned 500 total points
ID: 35226663
you didn't make enough corrections.
SELECT DateSerial(Year([TicketDate]), Month([TicketDate]), 1) AS yyyymm, Count(CumulativeSumProblem.TicketNumber) AS CountOfTicketNumber, 
(Select Count(*) From CumulativeSumProblem As CS Where 
DateSerial(Year(CS.[TicketDate]), Month(CS.[TicketDate]), 1) <= DateSerial(Year(CumulativeSumProblem.[TicketDate]), Month(CumulativeSumProblem.[TicketDate]), 1) ) As CumulativeSum
FROM CumulativeSumProblem
GROUP BY DateSerial(Year([TicketDate]), Month([TicketDate]), 1);

Open in new window

0
 

Author Comment

by:babble324
ID: 35226679
Thank you very much. It worked!

0

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

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

Suggested Solutions

This article describes how to use the timestamp of existing data in a database to allow Tableau to calculate the prior work day instead of relying on case statements or if statements to calculate the days of the week.
The Windows Phone Theme Colours is a tight, powerful, and well balanced palette. This tiny Access application makes it a snap to select and pick a value. And it doubles as an intro to implementing WithEvents, one of Access' hidden gems.
Familiarize people with the process of utilizing SQL Server stored procedures 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 Micr…
In Microsoft Access, learn how to use Dlookup and other domain aggregate functions and one method of specifying a string value within a string. Specify the first argument, which is the expression to be returned: Specify the second argument, which …

710 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