Solved

UNION query problem

Posted on 2007-03-29
3
161 Views
Last Modified: 2010-03-20
hi i have this question on the go:

http://www.experts-exchange.com/Programming/Languages/SQL_Syntax/Q_22474564.html

but i'm stuck, and have spent the last 2 days trying to get this query to work, i'm close but i'm not there.

i need to link 4 tables:

Suppliers
Deliveries (all deliveries made by a supplier)
Complaints (all complaints raised against supplier)
Periods

i want to output a query showing a by month summary of supplier performance

looking like:
Month         Deliveries      OnTime      AvgLeadTime       Complaints
Jan2007          86                 80                  12.1                     2
Feb2007           0                   0                                               0
Mar2007          10                  10                   8.0                     0

now this needs to be generated for all suppliers regardless of whether we had delivieries or not, i.e a LEFT JOIN on tSuppliers
and i need to UNION ALL the tDeliveries and tComplaints
and then do a BETWEEN on the Period table

if that makes any sense! its 8pm here and i'm weary of this!

please help

i'm using:

SELECT l.sAcc, tP.Period, Sum(l.Deliveries) AS SumOfDeliveries, Sum(l.[On Time]) AS [SumOfOn Time], Sum(l.LeadTime) AS SumOfLeadTime, Sum(l.Complaints) AS SumOfComplaints
FROM [SELECT qDel.sAcc, Format([DueDate],"yyyy-mm") AS Period
, Count(qDel.Prod) AS [Deliveries]
, Sum(qDel.OnTime) AS [On Time]
, Avg(qDel.LeadTime) AS [LeadTime]
, 0 as Complaints
FROM qDel
GROUP BY qDel.sAcc, Format([DueDate],"yyyy-mm")
UNION ALL
SELECT tblSC_Report.Account, Format([Date],"yyyy-mm") AS Period, 0 , 0 , 0, Count(tblSC_Report.ComplaintNo)
FROM tblSC_Report
GROUP BY tblSC_Report.Account, Format([Date],"yyyy-mm")
]. AS l, tP
WHERE (((l.Period) Between [tp].[pfrm] And [tp].[pto]))
GROUP BY l.sAcc, tP.Period
ORDER BY l.sAcc, tP.Period;

see the other post, for examples of what worked and didnt.

Thanks G

i'm using Access 2003 and my experience (nor brain power!) is that high
0
Comment
Question by:GrahamLaws
3 Comments
 
LVL 50

Accepted Solution

by:
Lowfatspread earned 250 total points
Comment Utility
is all you are now missing is month where there where no activity?

if so then you need a calendar table added to your query...

set up a table to contain all periods that are of interest to you ...

e.g.
reportperiod
periodDescription  char(7)  
Year smallint
month smallint
primary key (year,month)


then add it to your query as ...



 
0

Featured Post

Free Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

PL/SQL can be a very powerful tool for working directly with database tables. Being able to loop will allow you to perform more complex operations, but can be a little tricky to write correctly. This article will provide examples of basic loops alon…
Composite queries are used to retrieve the results from joining multiple queries after applying any filters. UNION, INTERSECT, MINUS, and UNION ALL are some of the operators used to get certain desired results.​
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…
Illustrator's Shape Builder tool will let you combine shapes visually and interactively. This video shows the Mac version, but the tool works the same way in Windows. To follow along with this video, you can draw your own shapes or download the file…

762 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

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now