我有一个只计算的SQL查询,它返回正确的值,但是当我将其切片并获得不同区域的计数时,总计数不再与第一个匹配。
这就是我得到的:
表格zipcodes,包含CountyID,CountyName&邮递区号。
包含ShippingCountry&amp ;;的表订单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 :(得分:1)
对于2个不同的CountyID,您可能拥有相同的STFO.ShippingZip。
这就是为什么在第二个查询中它会添加到每个CountyID,而在第一个查询中它只添加一次。
答案 1 :(得分: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