2017-04-11 2 views
1

Ich muss nur die empid aus einer Tabelle extrahieren, deren Status nur A und B ist.Ich muss nur die empid aus einer Tabelle extrahieren, deren Status sowohl A als auch B ist.

EMPID  Status  Number 
1   A   X 
1   B   Y 
+2

Was haben Sie versucht? Was ist deine Frage/Problem? –

+0

Fügen Sie einige weitere Zeilen mit Beispieldaten und auch das erwartete Ergebnis hinzu. Und zeigen Sie uns Ihren aktuellen Abfrageversuch. – jarlh

+0

Welches DBMS benutzen Sie? Postgres? Orakel? –

Antwort

3

Es gibt mehrere Möglichkeiten, sich dieser Abfrage zu nähern. Eine Möglichkeit besteht darin, zu verifizieren, dass jeder Mitarbeiter nicht einen anderen Status als A oder B hat, der mit ihm verbunden ist, und dass es zwei verschiedene Status gibt, die mit ihm verbunden sind. Beachten Sie, dass die erste Bedingung, wenn sie wahr ist, bedeutet, dass die einzigen zwei unterschiedlichen Status, die vorhanden sind, A und B sein müssen.

SELECT EMPID 
FROM yourTable 
GROUP BY EMPID 
HAVING SUM(CASE WHEN Status NOT IN ('A', 'B') OR Status IS NULL THEN 1 ELSE 0 END) = 0 AND 
     COUNT(DISTINCT Status) = 2 

Demo hier:

Rextester

+0

@raviranjan Stellen Sie sicher, dass die Statusspalte nicht 'null' hat, wenn Sie diese Methode verwenden –

+0

@TomJMuthirenthi Ich habe die Logik ein wenig aktualisiert, um die Möglichkeit zu behandeln, 'Status' ist' NULL'. –

Verwandte Themen