Wählen Sie das Abfrageergebnisfilter mit den Bedingungen aus

Ich habe folgende Auswahl abfragen

SELECT Table.ID SUM(CASE WHEN Table.Status = 1 THEN 1 ELSE null END) AS NormalCount, SUM(CASE WHEN Table.status = 2 THEN 1 ELSE null END) AS AbnormalCount FROM Table GROUP BY Table.ID 

Ich möchte über Ergebnisse kommen und neue Ergebnismenge mit folgenden Bedingungen generieren

 IF(NormalCount > 0 or AbnormalCount == NULL) SELECT Table.ID Table.Status AS "Normal" FROM Table GROUP BY Table.ID ELSE IF ( AbnormalCount > 0) SELECT Table.ID Table.Status AS "Abnormal" SUM(CASE WHEN Header.status = 2 THEN 1 ELSE null END) AS AbnormalCount FROM Table GROUP BY Table.ID 

Ich denke, die Logik, die Sie wollen, ist, jede ID Gruppe als abnormal zu etikettieren, wenn sie eine oder mehrere abnorme Beobachtung hat. Wenn ja, dann können Sie eine andere CASE statement verwenden, um die bedingte abnormale Summe zu überprüfen und den Status entsprechend zu kennzeichnen. Normale Gruppen hätten die Eigenschaft, eine abnormale Zählung von Null zu haben, aber diese Zählung würde für alle Gruppen erscheinen.

 SELECT t.ID, CASE WHEN SUM(CASE WHEN t.status = 2 THEN 1 ELSE 0 END) > 0 THEN "Abnormal" ELSE "Normal" END AS Status, SUM(CASE WHEN t.status = 2 THEN 1 ELSE 0 END) AS AbnormalCount FROM Table t GROUP BY t.ID