Question

calculate monthly trend from sql query

Asked by: j2jake

Hi Experts!

My project will ask the user for year and month, then it will show the last 4 months from the month and year chosen. So it will display a 5-month report. I have been able to formulate the query through the help of experts here. The next thing is to calculate the monthly trend and yearly average.

Here is an example:

If the user picks 2009 January. The result would show the months of Sep 2008, Oct 2008, Nov 2008, Dec 2008 and Jan 2009. Then calculate the monthly trend which is the current month, Jan 2009 divided by the average of the last 4 months. Another trend is divide the current month from the last month - Jan 2009 / Dec 2008. Same thing with the yearly average.

I have been able to query the 5 months but need help with calculating the trends from the months that have been fetched by the query. Any suggestions how should I start?

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-11-02 at 21:54:40ID24866220
Tags

access

,

sql

,

monthly

,

trend

,

calculate

Topics

Access Coding/Macros

,

Microsoft Access Database

,

SQL Query Syntax

Participating Experts
3
Points
500
Comments
9

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. java trends
    What are the major events that happened in Java/J2EE in the last four years What are the current trends in the Java/J2EE development
  2. Access, SQL - Update Joined Crosstab queries by Code …
    I have two cross tab queries joined on a field with monthly data added to columns each month. Is there a way for a formula to automatically update the query each month? This will show a trend with a calculation. There are two scores "s" and "n". Each mo...
  3. Access - How do I create a monthly trend with crosstab q…
    Here's the original question and sample database: http://www.experts-exchange.com/Microsoft/Development/MS_Access/Q_24583927.html I'll try to word this differently and hope to get a better result. When creating a crosstab for monthly data, a new column is added to the cross ...

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: vinurajrPosted on 2009-11-03 at 00:45:43ID: 25727016

cummulate the 4 months result and divide by the average of the cumulative result.

 

by: INHOUSERESPosted on 2009-11-03 at 02:03:43ID: 25727401

You want the months to be grouped, so you need to create an alias for the group.
I use something similar in a query I have which joins 3 months worth of data together:

In the query, you need to have something like this:
5MnthCum: IIf(Month Between DateSerial(Year([Month1]), Month([Month1])-5,1) and DateSerial(Year([Month1]), Month([Month1])+1,0),1,0)
and
CurMnth: IIf(Month Between DateSerial(Year([Month1]), Month([Month1]),1) and DateSerial(Year([Month1]), Month([Month1])+1,0),1,0)

You should then be able to do calculations on those figures.

 

by: harfangPosted on 2009-11-03 at 02:56:55ID: 25727647

Hi j2jake

You can obtain the figures from total queries, but as always, it's difficult to optimize expressions referring to the "previous <something>" in a database system, especially in Access.

Since your results are already in cross-tab format, it's much easier to use simple column calculations. (You could have repeated that in your question for new experts joining your related-question thread.) The problem is that you have variable columns:

    | 2008 Sept | 2008 Oct | 2008 Nov | 2008 Dec | 2009 Jan |

ISO months would be preferable, but they would still be variable. In order to build anything on an existing cross-tab query, you must make the columns static.

The query below will always produce exactly five result columns

    | merchant_customer_id | five_month_gms | mm4 | mm3 | mm2 | mm1 | mm0 |

read "month minus 4" to "month minus 0". You can then create a new query based on this one. For example:

    return: 4*mm0 / (mm4+mm3+mm2+mm1)

This breaks if you don't have enough historical data (Null values).

When presenting the query to the user, you can write the actual month into labels used as column headers (on a form or report).

Cheers!
(°v°)

' Provide a date field on your form (which can be hidden):
' txtThisMonth: = CDate(cboYear & ' ' & cboMonth)
----
PARAMETERS [Forms]![frmMerchants]![txtThisMonth] Date;
TRANSFORM Sum(daa_total_gms)
SELECT merchant_customer_id, Sum(daa_total_gms) AS five_month_gms
FROM tblMSales
WHERE [dates] Between
  DateAdd('m',-4,[Forms]![frmMerchants]![txtThisMonth])
  And [Forms]![frmMerchants]![txtThisMonth]
GROUP BY merchant_customer_id
PIVOT
  'mm'+DateDiff('m',[dates],[Forms]![frmMerchants]![txtThisMonth])
    In('mm4','mm3','mm2','mm1','mm0)

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

Select allOpen in new window

 

by: j2jakePosted on 2009-11-03 at 13:15:09ID: 25733750

hi harfang!

thanks for the immediate reply. I tried this code (below) and was given an error, access cant find the field 'txtThisMonth' referred to in your expression.

Private Sub cmdSubmit_Click()

Dim txtThisMonth As String

txtThisMonth = CDate(cboYear & " " & cboMonth)

DoCmd.OpenQuery "qryTest"

End Sub

 

by: harfangPosted on 2009-11-04 at 02:39:49ID: 25737988

What I meant: Your query needs to convert cboYear and cboMonth to a date several times over. This makes the query hard to read and maintain, and a bit slower. Instead, open your form frmMerchants, create a new text box, and type this expression as control source:

    = CDate(cboYear & ' ' & cboMonth)

Now, you query can use txtThisMonth as date parameter directly, no need to perform the same conversion twice on every other line. The query I posted used that single parameter.

You tried to create a VB variable, not a control, and variables aren't visible from queries.

(°v°)

 

by: j2jakePosted on 2009-11-05 at 16:23:59ID: 25755626

harfang,

It's giving me an error "3270, property not found. i tried to fix the apostrophes and everything and double-checked it. Seems stuck. Any suggestions?

PARAMETERS [Forms]![frmMerchants]![txtThisMonth] DateTime;
TRANSFORM Sum(tblMSalesComplete.daa_total_gms) AS SumOfdaa_total_gms
SELECT tblMSalesComplete.friendlyname AS Merchants, Sum(tblMSalesComplete.daa_total_gms) AS [Total GMS]
FROM tblMSalesComplete
WHERE [dates] Between DateAdd("m",-4,Forms!frmMerchants!txtThisMonth) And Forms!frmMerchants!txtThisMonth
GROUP BY tblMSalesComplete.friendlyname
PIVOT 'mm'+DateDiff("m",tblMSalesComplete.[dates],Forms!frmMerchants!txtThisMonth) In ("mm4","mm3","mm2","mm1","mm0");

 

by: harfangPosted on 2009-11-05 at 16:36:51ID: 25755713

Hmm. The only issue I see is that the parameter isn't *exactly* the same in the declaration and in the WHERE section. Try to copy-paste, so that you have everywhere:

    [Forms]![frmMerchants]![txtThisMonth]

Then again, "property not found" looks like a VB error message. Do you get it when you try to open your cross-tab query from the interface, or when using a button? For example, the click event should now be reduced to:

Private Sub cmdSubmit_Click()
    DoCmd.OpenQuery "qryTest"   ' <--- name of your lastest test
End Sub

(°v°)

 

by: j2jakePosted on 2009-11-10 at 14:22:16ID: 25790545

hi harfang!

this project has been moved til next month because i have to deal with another one right now. I'll close this one for now and just give you the points. thanks so much for the help Sir!

 

by: harfangPosted on 2009-11-11 at 02:07:12ID: 25793624

No problem. If you need to get back to this, please use the line "ask a related question" on this question; this will provide the background, and I will get a notification.

Thanks!
(°v°)

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...