SQL Count unterscheidet sich

Ich habe eine SQL-Abfrage, die gerade zählt und es den richtigen Wert zurückgibt, aber wenn ich es schneide und die Zählung für die verschiedenen Bereiche erhalten, stimmt die Gesamtzahl nicht mehr mit dem ersten überein.

Dies ist, was ich bekam:

Tabellen-Zipcodes, die eine CountyID, CountyName & Postleitzahl enthalten.

Tabellenaufträge, die ShippingCountry & ShippingZip enthalten

Der erste Graf sieht so aus:

SELECT COUNT(STFO.ShippingZip) FROM Orders WHERE AND STFO.intShippingCountryID = 202 AND STFO.ShippingZip IN (SELECT DISTINCT ZipCode FROM SwedishZipCodes07) AND STFO.ShippingZip > 0 

In einem Beispiel bekomme ich diese Zählung auf 3007, was richtig ist. In meiner nächsten Zählung sieht es so aus:

 SELECT DISTINCT CountyName, CountyID, (SELECT COUNT(STFO.ShippingZip) FROM Orders WHERE AND STFO.intShippingCountryID = 202 AND STFO.ShippingZip IN (SELECT DISTINCT ZipCode FROM SwedishZipCodes07 WHERE CountyID = ZipWrapper.CountyID) AND STFO.ShippingZip > 0) AS Count FROM Zipcodes ZipWrapper ORDER BY ZipWrapper.CountyID 

Im selben Beispiel bekomme ich jetzt wie 3018. (In meinen Beispielen wird die Abfrage genauer gefiltert, aber beide passen einander, die Unterschiede sind in meinem vereinfachten Beispielcode hier).

Sie können das gleiche STFO.ShippingZip für 2 verschiedene CountyIDs haben.

Das ist der Grund, warum in der zweiten Abfrage wird es jedem CountyID hinzufügen und in der ersten wird es nur einmal hinzugefügt.

Versuche es so:

 SELECT CountyName, CountyID, ( SELECT COUNT(DISTINCT(STFO.ShippingZip)) FROM Orders STFO, SwedishZipCodes07 WHERE STFO.intShippingCountryID = 202 AND STFO.ShippingZip > 0 AND STFO.ShippingZip = SwedishZipCodes07.ZipCode AND SwedishZipCodes07.CountyId = ZipWrapper.CountyID ) AS Count FROM Zipcodes ZipWrapper ORDER BY ZipWrapper.CountyID