2011-06-08 63 views
0

我有一個SQL查詢,只是計數,它會返回正確的值,但是當我切片並獲得不同區域的計數總計數不再匹配第一個。SQL計數不同

這是我得到:

表郵編,包含一個CountyID,CountyName &郵編。

包含ShippingCountry & ShippingZip

第一計

訂單表看起來是這樣的:

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

在一個例子中我得到這個數到3007至極是正確的。 在我的下一個計數,它看起來更像是這樣的:

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 

以非常相似例子我現在得到計數像3018 (在我的例子查詢過濾更具體的,但它們都相互匹配,差異在我的簡單示例代碼中)。

+0

我實在無法理解你的英語? 「現在得到數如」?你可以發佈查詢與他們的結果? – BonyT 2011-06-08 14:33:09

+0

是的,你有兩個不同的過程來做兩件不同的事情。那裏有什麼問題嗎? – mikeY 2011-06-08 14:34:50

+0

比較兩個選擇:'SELECT DISTINCT ZipCode FROM SwedishZipCodes07'和'SELECT DISTINCT ZipCode FROM SwedishZipCodes07 WHERE CountyID = ZipWrapper.CountyID'。看起來可能會有問題。 – Michas 2011-06-08 14:35:11

回答

1

對於2個不同的CountyID,您可能具有相同的STFO.ShippingZip。

這就是爲什麼在第二個查詢中它將添加到每個CountyID,並在第一個它只添加一次。

+0

是的,這非常重要。 – Azazel 2011-06-09 07:59:39

0

試試這樣說:

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 
+0

這不工作,因爲所有具有相同郵政編碼的成員將被計爲一個。在我的例子中總計數達到了1419(約爲正確計數的一半)。 – Azazel 2011-06-09 06:33:20