Click here to monitor SSC
SQLServerCentral is supported by Red Gate Software Ltd.
 
Log in  ::  Register  ::  Not logged in
 
 
 
        
Home       Members    Calendar    Who's On


Add to briefcase

Querying Results From a Query Expand / Collapse
Author
Message
Posted Tuesday, December 04, 2012 10:35 AM
Grasshopper

GrasshopperGrasshopperGrasshopperGrasshopperGrasshopperGrasshopperGrasshopperGrasshopper

Group: General Forum Members
Last Login: Sunday, October 20, 2013 3:13 PM
Points: 20, Visits: 79
Good Evening Everyone,

Seeing as in the next few weeks my boss is going to be increasing my workload dramatically i need to find a way of making my current work more efficient and I was hoping that some of you experts could help me with a particular issue which requires me to run 2 querys to produce one report.
I'll explain further...

When one of our engineers visits a site it is assigned a Reference (e.g. BS12345) and job type (TV Install, WIFI Install etc).
When this site is revisited for a service the assigned reference changes to BS12345R1 for the first revisit, R2 for the 2nd etc. and the job type will change to RVI (revisit). however the way it has been set up is there is no way to match the original job with the RVI.

Now what i do...
i query the database to extract all RVI's, i put this into excel, write a formula to remove the R1,R2 etc so im just left with the Job reference in the form BS12345,
I then put these references back into another query to bring back the original job type and job date
then i perform a VLookup to match the original Job with RVI to give me an original job type and RVI....

Very long winded...

I was hoping that someone could show me a technique in which i can use the results of the first query to run the 2nd without having to jump in and out of excel

Your help will be forever appreciated
Post #1392617
Posted Tuesday, December 04, 2012 10:52 AM


SSChampion

SSChampionSSChampionSSChampionSSChampionSSChampionSSChampionSSChampionSSChampionSSChampionSSChampion

Group: General Forum Members
Last Login: Today @ 4:29 PM
Points: 12,741, Visits: 31,053
we'd have to see the actual table structure and sample data (CREATE TABLE ...INSERT INTO)

but you could do something as easy as joining with an "exotic" join...that is not with an equals sign:
CREATE TABLE MainTable(Reference varchar(30),JobType varchar(30) )
INSERT INTO MainTable SELECT 'BS12345','TV Install' UNION ALL SELECT 'BS54321','WIFI Install'
CREATE TABLE RevisitTable(Reference varchar(30),JobType varchar(30))
INSERT INTO RevisitTable SELECT 'BS12345R1','RVI' UNION ALL SELECT 'BS12345R2','RVI'

SELECT * FROM MainTable
LEFT OUTER JOIN RevisitTable
ON CHARINDEX(MainTable.Reference,RevisitTable.Reference ) > 0

/*
Reference JobType Reference JobType
BS12345 TV Install BS12345R1 RVI
BS12345 TV Install BS12345R2 RVI
BS54321 WIFI Install NULL NULL
*/



Lowell

--There is no spoon, and there's no default ORDER BY in sql server either.
Actually, Common Sense is so rare, it should be considered a Superpower. --my son
Post #1392621
Posted Tuesday, December 04, 2012 11:04 AM
SSCommitted

SSCommittedSSCommittedSSCommittedSSCommittedSSCommittedSSCommittedSSCommittedSSCommitted

Group: General Forum Members
Last Login: Thursday, April 03, 2014 7:20 AM
Points: 1,528, Visits: 1,971
What happens when the main table contains BS1234 as well as BS12345 ?

As ugly as it might perform, you may need to join like this:

SELECT fld1, fld2, fld3
FROM VISITS AS V
LEFT JOIN REVISITS AS R
ON V.Reference = LEFT(R.Reference, CHARINDEX('R', R.Reference) - 1)



Steve
(aka sgmunson)

Internet ATM Machine
Post #1392629
« Prev Topic | Next Topic »

Add to briefcase

Permissions Expand / Collapse