Ich versuche, eine Bedingung in eine count-Anweisung schreiben, wo es nur die Einträge zählen sollte, die kein ENDDATE haben. Ich suche den Zustand im Inneren der Zählung, da dies ein sehr kleiner Teil eines großen SQL-AbfrageBedingung innerhalb einer Zählung -SQL
Antwort
Beispielabfrage für das Schreiben,
Produkt auswählen, count (*) als Menge
aus Tabelle
wo end_date nach Alter null
Gruppe ist
Diese Abfrage listet Menge für jedes Produkt, das eine nicht haben Enddatum
Ein Verfahren verwendet bedingte Aggregation:
select sum(case when end_date is null then 1 else 0 end) as NumNull
. . .
Eine andere Methode nur ist zweifacher Hinsicht zu subtrahieren:
select (count(*) - count(end_date)) as NumNull
count(end_date)
zählt die Anzahl, die nichtNULL
sind, so subtrahieren diese von Die vollständige Zählung erhält die Nummer NULL
.
Uhmmmmm.
Es klingt, als ob Sie nach bedingter Aggregation suchen.
Also, wenn Sie eine aktuelle Anweisung, die Art funktioniert (und wir vermuten, dass, nur weil wir etwas nicht sehen Sie bisher versucht haben, ...)
SELECT COUNT(1)
FROM mytable t
Und Sie möchte einen anderen anderen Ausdruck, der eine Anzahl von Zeilen zurückgibt, die einige Bedingungen erfüllen ...
und wenn Sie "kein ENDDATE" sagen, werden Sie in Zeilen zurückgesetzt, die einen ENDDATE-Wert von NULL haben (und wieder , wir raten nur, dass die Tabelle eine Spalte namens ENDDATE hat. Jede Zeile wird eine ENDDATE-Spalte haben.)
Wir verwenden einen ANSI-Standard-kompatiblen CASE-Ausdruck, da dies in den meisten Datenbanken (SQL Server, Oracle, MySQL, Postgres ...) funktionieren würde und wir keine Ahnung haben, welche Datenbank Sie verwenden.
SELECT COUNT(1)
, COUNT(CASE WHEN t.ENDDATE IS NULL THEN 1 ELSE NULL END) AS cnt_null_enddate
FROM mytable t
- 1. SQL-Zählung und Gruppierung mit Bedingung
- 2. Bedingung innerhalb einer Where-Klausel in sql
- 3. SQL-Zählung auf einer verbundenen Tabelle
- 4. Zurückgeben einer Zählung mit linq-to-sql
- 5. SQL Zählung Gesamt
- 6. Rollende Zählung SQL
- 7. SQL Zählung für jeden Tag
- 8. SQL-Inkrement Zählung bei Wiederholungswerten?
- 9. Zählung anderer Wert in SQL
- 10. Einfache SQL-Zählung zu LINQ?
- 11. Hinzufügen einer Zählung zu einer komplexen SQL-Abfrage
- 12. Variable Änderung innerhalb einer unbrauchbaren Bedingung
- 13. Run SQL-Anweisung basierend auf SQL-Zählung
- 14. Zählung in SQL - zwei Tabellen
- 15. Oracle SQL Zählung col Werte
- 16. Abfrage Zählung in SQL bekommen
- 17. SQL-Join-Unterabfrage, wo Bedingung
- 18. Zählung verschieden in SAS SQL Fall, wenn
- 19. Werte innerhalb wenn Bedingung
- 20. Befehle innerhalb If-Bedingung
- 21. Wie man zwei Tabellen mit "Zählung" innerhalb
- 22. Hilfe Erstellen einer Oracle SQL mit Bedingung
- 23. entfernen Zeilen Vor einer Bedingung in SQL
- 24. SQL Server: INSERT mit einer Bedingung
- 25. Platzieren einer foreach-Schleife innerhalb einer if-Bedingung
- 26. Linq to SQL - Rückgabe einer Zählung aus zwei Tabellen
- 27. Wie in i vier Spalten nach einer Zählung Summe SQL
- 28. SQL Query innerhalb einer Funktion
- 29. SQL - Filtern innerhalb einer Fensterfunktion
- 30. SQL-Update innerhalb einer Tabelle
Bitte beachten Sie, dass es sich bei StackOverflow nicht um einen kostenlosen Code-Schreibservice handelt. Wenn Sie uns nicht genau mitteilen, wie Sie Ihr Problem reproduzieren können und wo Sie Probleme haben, wird es schwierig für uns, Ihnen zu helfen. Beschreiben Sie, was Sie bereits versucht haben, so detailliert wie möglich und stellen Sie ein [minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) bereit. Siehe auch [Wie stelle ich eine gute Frage?] (Http://stackoverflow.com/help/how-to-ask). – MJH