Was ist der Unterschied zwischen COUNT(CASE WHEN [Column A] = ____ THEN 1 END
und COUNT(CASE WHEN [Column A] = ____ THEN 1 ELSE 0 END
?
Ich habe das erstere verwendet und den Unterschied bisher nicht gesehen. Was ist der Grund für das Hinzufügen von ELSE 0
- Gibt es Situationen, in denen SQL Server falsch zählt?
sql-server
sql-server-2008
Coburne
quelle
quelle
Antworten:
Einfach genug, im ersten Fall zählen Sie 1s & NULLs. (NULL wird zurückgegeben, wenn keine der Bedingungen in der CASE-Anweisung übereinstimmt und keine ELSE-Klausel vorhanden ist.) NULL-Werte werden nicht gezählt. Im zweiten Fall Einsen und Nullen. Nullen können gezählt werden.
Kurzes Beispiel:
Ausgabe:
quelle
Wenn Sie den else-Teil nicht für die case-Anweisung angeben, wird standardmäßig NULL zurückgegeben. In Ihrem Fall ist dies eine gute Sache, da count die Nicht-NULL-Werte zählt. Wenn Sie etwas anderes aus dem Fall zurückgeben, spielt es keine Rolle, ob es 1, 0 oder 2 ist, es wird immer als 1 gezählt.
Wenn Sie sum anstelle von count verwenden würden, sollten Sie 1 oder 0 zurückgeben.
quelle