|
|
|
Grasshopper
      
Group: General Forum Members
Last Login: Thursday, April 11, 2013 9:49 AM
Points: 19,
Visits: 75
|
|
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
|
|
|
|
|
SSChampion
        
Group: General Forum Members
Last Login: Today @ 1:52 AM
Points: 11,627,
Visits: 27,693
|
|
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
|
|
|
|
|
UDP Broadcaster
      
Group: General Forum Members
Last Login: Wednesday, May 15, 2013 8:20 AM
Points: 1,446,
Visits: 1,883
|
|
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)
   Weight Loss Tips
|
|
|
|