ich eine Abfrage erstellen bin versucht, dieSQL Query Zeilen zu filtern, um eine Sub-Abfrage verwenden, die die gleiche Tabelle abfragt
Ich versucheTableA
Id status type date
300 approved ACTIVE 11/12/2015 10:00:00
300 approved ACTIVE 11/12/2015 10:10:00
300 approved INACTIVE 11/12/2015 11:00:00
200 approved ACTIVE 11/12/2015 11:10:00
200 approved INACTIVE 11/12/2015 11:10:00
100 approved ACTIVE 11/12/2015 11:10:00
Aus der obigen Tabelle Zeilen basierend auf anderen Zeilen wie im folgende Beispiel filtert Um IDs zurückzugeben, die die gleiche Anzahl von ACTIVE- und INACTIVE-Typen wie ID 300 haben, hat zwei Zeilen den Typ ACTIVE und eine Zeile den Typ INACTIVE, daher sollte ID 300 von meinen Ergebnissen ausgeschlossen werden, da 200 1 aktiv und 1 inaktiv hat in den Ergebnissen enthalten
In der oben genannten Tabelle Status, Typ kann andere Werte zu haben, aber ich interessiere mich nur für die oben aufgeführten ignorieren andere
Also, für TableA endgültige Ergebnis der Abfrage würde
Id
200
Ich habe versucht, die unter Abfrage laufen, aber dass nur knapp sein Ziel geben Sie mir die Ergebnisse, die ich
SELECT Id
FROM TableA oa
WHERE oa.type in('ACTIVE','INACTIVE')
and oa.status='APPROVED'
and not EXISTS(SELECT
x.id
,COUNT(*)
FROM (SELECT DISTINCT
id
,c.type
FROM TableA c
WHERE
AND c.type IN ('ACTIVE','INACTIVE')
AND c.status = 'APPROVED'
AND c.Id= ta.Id
)x
GROUP BY x.Id
HAVING COUNT(*) = 1)
kann die obige Abfrage erwartet korrigiert werden, um die gewünschten Ergebnisse zu erhalten?
Danke und wie die Abfrage bearbeite ID in den Fällen auch enthalten, wenn ACTIVE s größer als Inaktiven? – DoIt
Ändern Sie das letzte "=" in ">" – kmoser
Verwenden Sie> =, um beide einzuschließen. – PhillipXT