?
Solved

Enhance SQL Query

Posted on 2014-01-27
4
Medium Priority
?
108 Views
Last Modified: 2014-02-04
Dear Sir/Madam, I am seeking help in SQL used in Sybase IQ Client.  Please see attached spreadsheet.  I work in the transportation industry working with commercial airline passenger's air fares.  When data is requested by customers, I have to ensure that at least 3 airlines operate a certain route (i.e. New York JFK-London) prior to providing the data (security measure).  My current query, as seen in "Query1" tab in the attached, is performing this correctly.  This query is run route by route.  I am trying to find a way to run it for all routes, with the taking into account the 3-airline rule.  I am not having much luck so I turn to the EE's for input.  Please advise with any questions.  Thank you. James.
Experts-Exchange-Question-012714.xlsx
0
Comment
Question by:James0903
[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
  • 2
  • 2
4 Comments
 
LVL 34

Accepted Solution

by:
Brian Crowe earned 2000 total points
ID: 39813579
Let me know if we're on the right track here...

DECLARE @Quarter		INT,
	@Year				INT,
	@MinOpCarrierCount	INT = 3,
	@OriginWAC			INT = NULL,	--Leaving NULL returns for all originwac values
	@DestWAC			INT = NULL	--Leaving NULL returns for all destwac values

IF OBJECT_ID('tempdb..#Route') IS NOT NULL
	DROP TABLE #Route

SELECT [year], [quarter], originwac, destwac
INTO #Route
FROM XXX
WHERE ISNULL(@OriginWAC, originwac) = originwac
	AND ISNULL(@DestWAC, destwac) = destwac
	AND [year] = @Year
	AND [quarter] = @Quarter
        AND originwac < 100
	AND destwac > 100
GROUP BY [year], [quarter], originwac, destwac
HAVING COUNT(1) >= @MinOpCarrierCount;

SELECT X.[year],
	X.[quarter],
	X.ORIGIN,
	X.DEST,
	SUM(X.PASSENGERS) AS PAX,
	SUM(X.MKTFARE * X.PASSENGERS) AS REV,
	CAST((X.REV / X.PAX) AS NUMERIC(8,2)) AS AVG_FARE
FROM XXX AS X
INNER JOIN #Route AS R
	ON X.[year] = R.[year]
	AND X.[quarter] = R.[quarter]
	AND X.originwac = R.originwac
	AND X.destwac = R.destwac

Open in new window

0
 
LVL 34

Expert Comment

by:Brian Crowe
ID: 39813586
Not sure how or if the above query will work in a Sybase environment but you posted in a SQL Server topic area so I thought I'd give it a shot.
0
 

Author Comment

by:James0903
ID: 39815486
BriCrowe, thank you.  I will give it a try.  If there is a Sybase section I will post it there is the above code has any issues.  Thank you.
0
 

Author Closing Comment

by:James0903
ID: 39833186
BriCrowe, thank you for the query.  My priorities were shifted around so I have to put this on the back burner.  I appreciate your help.
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

In this article we will learn how to fix  “Cannot install SQL Server 2014 Service Pack 2: Unable to install windows installer msi file” error ?
What if you have to shut down the entire Citrix infrastructure for hardware maintenance, software upgrades or "the unknown"? I developed this plan for "the unknown" and hope that it helps you as well. This article explains how to properly shut down …
Via a live example, show how to extract insert data into a SQL Server database table using the Import/Export option and Bulk Insert.
Viewers will learn how to use the SELECT statement in SQL to return specific rows and columns, with various degrees of sorting and limits in place.

766 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