Ich habe zwei Tische. Tabelle A enthält eine Liste von Mitarbeiternamen. Tabelle B ist eine komplexe Tabelle mit Informationen über Telefonanrufe von Mitarbeitern.
Mein Ziel ist es, eine Tabelle mit den Spalten 'name' und 'callCount' zu erstellen. Ich möchte dies mit einer "linken Verbindung" und einer "Gruppe von" erreichen, aber ich vermisse weiterhin die Mitarbeiter, die keine Anrufe getätigt haben. Wie kann ich es nur bekommen, um den Namen zu behalten und nur eine Null dort zu setzen?
Vielleicht bin ich nah und jemand kann meinen Tippfehler aufzeigen? Vielen Dank im Voraus für Ihre Hilfe, hier ist das SQL:
%Vor%Es ist ein JOIN, kein NULL-Problem: Ihr Filter ändert den OUTER in einen INNER JOIN. Das bedeutet, dass Sie nur COUNT erhalten, wenn Sie Zeilen in CallTable (B) haben und nicht den gewünschten OUTER JOIN.
%Vor%Bearbeiten: Nach Ihrem Kommentar woanders, müssen alle Ihre Filter auf B in der abgeleiteten Tabelle sein, nicht in der äußeren wo.
Da Sie einen LINKEN JOIN verwenden, können Verweise auf die im LEFT JOIN definierte Tabelle null sein. Die Zeilen sind da, Sie sehen den Zählwert einfach nicht als Null. Dies bedeutet, dass Sie diesen NULL-Wert (in diesem Fall) in Null konvertieren müssen:
%Vor%In diesem Beispiel wird COALESCE verwendet, ein ANSI-Standard zur Behandlung von NULL-Werten. Es wird den ersten Nicht-Null-Wert zurückgeben, aber wenn keiner gefunden werden kann, gibt es null zurück. ISNULL ist eine gültige Alternative für SQL Server, aber für andere nicht tragbar Datenbanken während COALESCE ist. Hier ist ein MSDN-Artikel, der die beiden Funktionen vergleicht .
Tags und Links sql sql-server tsql join