Solved

Intersecting 2 recordsets based only on one field common to both

Posted on 2012-03-28
2
460 Views
Last Modified: 2012-06-21
Without going into detail about how I arrived at the 2 queries below, what I need to do is identify records that meet these 2 criteria:
1. TestTypeID2 must appear in both recordsets (that is to say, tests were run on both machines 101 and 102).
2. The sum of the total failures between BOTH machines must be 4 or greater.

So, in the sample screenshot attached, you can see in the returned recordsets that:
- Only TestTypeID2 = 32 qualifies
- TestTypeID2 = 33 only had 3 failures total
- TestTypeID2 = 35 only had failures on machine 102

I believe I need some sort of intersection, but only based on the TestTypeID2 field.

Here are the queries:

SELECT PH.MachineID
      ,PTD2.TestTypeID AS TestTypeID2
      ,COUNT(PTD2.TestData) AS TotalFails
  FROM [Comtech_HFV6].[dbo].[tbl_PartHistory] PH
  LEFT JOIN tbl_PartTestData PTD
  ON PH.PartHistoryKey = PTD.PartHistoryKey
  LEFT JOIN tbl_PartTestData PTD2
  ON (PTD.PartHistoryKey = PTD2.PartHistoryKey) AND (PTD.TestTypeID + 6 = PTD2.TestTypeID )
  WHERE PH.SerialNumber = 'A22222222'
      AND PH.MachineID = 101
      AND PTD.TestTypeID BETWEEN 26 and 31
      AND PH.PassedStatus < 0
      AND CAST(PTD2.TestData AS REAL) = 0
      AND CAST(PTD.TestData AS REAL) < 900
    GROUP BY PTD2.TestTypeID, PH.MachineID
 
 SELECT PH.MachineID
      ,PTD2.TestTypeID AS TestTypeID2
      ,COUNT(PTD2.TestData) AS TotalFails
  FROM [Comtech_HFV6].[dbo].[tbl_PartHistory] PH
  LEFT JOIN tbl_PartTestData PTD
  ON PH.PartHistoryKey = PTD.PartHistoryKey
  LEFT JOIN tbl_PartTestData PTD2
  ON (PTD.PartHistoryKey = PTD2.PartHistoryKey) AND (PTD.TestTypeID + 6 = PTD2.TestTypeID )
  WHERE PH.SerialNumber = 'A22222222'
      AND PH.MachineID = 102
      AND PTD.TestTypeID BETWEEN 26 and 31
      AND PH.PassedStatus < 0
      AND CAST(PTD2.TestData AS REAL) = 0
      AND CAST(PTD.TestData AS REAL) < 900
    GROUP BY PTD2.TestTypeID, PH.MachineID
Sample-Recordsets.jpg
0
Comment
Question by:jdallen75
2 Comments
 
LVL 9

Accepted Solution

by:
rajeevnandanmishra earned 500 total points
ID: 37779386
Just replace your queries in the YourQuery1 and YourQuery2 and it will provide the result:

SELECT a.TestTypeID2 FROM (yourQuery1) a
JOIN (yourQuery2) b on b.TestTypeID2
and a.TotalFails + b.TotalFails >= 4
0
 

Author Closing Comment

by:jdallen75
ID: 37779644
Just needed slight modification:

SELECT a.TestTypeID2 FROM (yourQuery1) a
JOIN (yourQuery2) b
ON a.TestTypeID2 = b.TestTypeID2
WHERE a.TotalFails + b.TotalFails >= 4

But otherwise, nice and concise... thanks!
0

Featured Post

Optimizing Cloud Backup for Low Bandwidth

With cloud storage prices going down a growing number of SMBs start to use it for backup storage. Unfortunately, business data volume rarely fits the average Internet speed. This article provides an overview of main Internet speed challenges and reveals backup best practices.

Question has a verified solution.

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

In this article I will describe the Detach & Attach method as one possible migration process and I will add the extra tasks needed for an upgrade when and where is applied so it will cover all.
How to leverage one TLS certificate to encrypt Microsoft SQL traffic and Remote Desktop Services, versus creating multiple tickets for the same server.
Using examples as well as descriptions, and references to Books Online, show the different Recovery Models available in SQL Server and explain, as well as show how full, differential and transaction log backups are performed
Via a live example, show how to set up a backup for SQL Server using a Maintenance Plan and how to schedule the job into SQL Server Agent.

932 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

11 Experts available now in Live!

Get 1:1 Help Now