vérifier si l'logging spécifique trouvé puis find un autre logging avec le même groupe

J'ai une table

Table principale

PROBLEM_ID PROBLEM PGROUP 1 Other Hardware Hardware 2 Error On hardware Hardware 3 PM Hardware 4 Service Maintenance 

et un détail

 TERM PROBLEM PROBLEM_ID S1G166901 PM 3 S1G166902 PM 3 S1G166903 Service 4 S1G166902 Other on hardware 1 S1G166901 Service 4 S1G166901 Other Hardware 1 S1G166901 Error on Hardware 2 

Je dois interroger si PROBLEM_ID = '41' puis find un PROBLEM qui a PGROUP = 'Matériel'

comme ça

 TERM PROBLEM PROBLEM_ID PGROUP S1G166901 PM 3 Hardware S1G166901 Other hardware 1 Hardware S1G166901 Error on hardware 2 Hardware S1G166902 PM 3 Hardware S1G166902 Other Hardware 1 Hardware 

J'essaie d'utiliser Outer appliquer mais c'est trop de return

mon résultat spécifique est s'ils ne contiennent pas PROBLEM_ID = '41' alors ne montrera pas mais si contain montrera tout le problème avec pgroup = 'Matériel' par terme

j'essaye

 SELECT p.TERM, p.Problem_ID,p.problem, PGROUP FROM Problem_log AS p CROSS APPLY ( SELECT s.pgroup, s.problem_id FROM problem AS s WHERE s.problem_id = p.problem_id AND PGROUP = 'Hardware' )as s WHERE exists (Select s.PGROUP,s.PROBLEM_ID from PROBLEM_LOG WHERE problem_log.PROBLEM_ID = '41' GROUP BY term) ORDER BY TERM 

ma séquence est – Sélectionnez datatables de la table problem_log pour problem_ID = '41'

  • if problem_ID = '41' Pour chaque vérification d'logging trouvée autre problème (matériel seulement)

Je pense que cette requête devrait fonctionner dans votre cas.

 Select DISTINCT D.TERM, M.PROBLEM, M.PROBLEM_ID, M.PGROUP From Problem M Inner Join Problem_log D ON M.PROBLEM=D.PROBLEM WHERE (D.TERM IN (Select TERM FROM Problem_log D1 Inner Join Problem M1 ON M1.PROBLEM=D1.PROBLEM Where D1.PROBLEM_ID=D.PROBLEM_ID And M1.PGROUP='Hardware' AND D1.Problem='PM')) ORDER BY TERM,PROBLEM 

Vous pouvez essayer cette requête sur le violon

Vous avez juste besoin d'utiliser INNER JOIN avec la table Master pour get PGROUP pour chaque ProblemID

Vérifiez la requête ci-dessous:

 SELECT D.TERM, D.PROBLEM, D.PROBLEM_ID, M.PGROUP FROM Details D INNER JOIN Master M ON D.ProblemID = M.ProblemID WHERE EXISTS (SELECT * FROM Details WHERE PRoblem = 'PM' AND TERM = D.TERM) 

Pouvez-vous essayer cela

 SELECT dt.Term, dt.Problem, dt.ProblemID FROM DetailsTable dt JOIN MasterTable mt ON dt.ProblemID = mt.ProblemID JOIN MasterTable mt1 ON mt.PGroup = mt1.PGroup and mt1.Problem = 'PM' ORDER BY dt.Term