December 4, 2012 at 10:35 am
Good Evening Everyone,
Seeing as in the next few weeks my boss is going to be increasing my workload dramatically :crying: 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
December 4, 2012 at 10:52 am
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
/*
ReferenceJobTypeReferenceJobType
BS12345TV InstallBS12345R1RVI
BS12345TV InstallBS12345R2RVI
BS54321WIFI InstallNULLNULL
*/
Lowell
December 4, 2012 at 11:04 am
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) 🙂 🙂 🙂
Rent Servers for Income (picks and shovels strategy)
Viewing 3 posts - 1 through 2 (of 2 total)
You must be logged in to reply to this topic. Login to reply