Sql server 2005 返回的SQL查询编号不正确

Sql server 2005 返回的SQL查询编号不正确,sql-server-2005,Sql Server 2005,我不明白为什么它没有返回正确的值。我有一个疑问: SELECT ClosingMonth, CAST(SUM(EstSale10)as DECIMAL (10,2)) as 'EstSale10', CAST(SUM(EstSale25)as DECIMAL(10,2)) as 'EstSale25' FROM( SELECT ClosingMonth, SUM(EstSaleLessWar) OVER (PARTITION BY ClosingMonth) AS 'E

我不明白为什么它没有返回正确的值。我有一个疑问:

SELECT 
  ClosingMonth,
  CAST(SUM(EstSale10)as DECIMAL (10,2)) as 'EstSale10',
  CAST(SUM(EstSale25)as DECIMAL(10,2)) as 'EstSale25'
FROM(
  SELECT ClosingMonth,
    SUM(EstSaleLessWar) OVER (PARTITION BY ClosingMonth) AS 'EstSale10',
    0.00 AS 'EstSale25'
  FROM dbo.Contracting_SAF
    WHERE OwnerID = '65'
        AND Year = '2013'
        AND ClosingMonth = 'December'
        AND Status != '10'
        AND ConfLevel = 'Not Likely (10%)'
   UNION ALL
   SELECT ClosingMonth,
     0.00 AS 'EstSale10',
     SUM(EstSaleLessWar) OVER (PARTITION BY ClosingMonth) AS 'EstSale25'
   FROM dbo.Contracting_SAF
     WHERE OwnerID = '65'
        AND Year = '2013'
        AND ClosingMonth = 'December'
        AND Status != '10'
        AND ConfLevel = 'Low (25%)') T
GROUP BY T.ClosingMonth
我的结果如下:

December | 0.00 | 29106570.00
问题是在PHP中使用数字_格式显示该值为29106570.00,而在下面的单个查询中,该值应仅为2910657.00:

SELECT SUM(EstSaleLessWar) 
FROM Contracting_SAF
WHERE OwnerID = '65' 
    AND Year = '2013' 
    AND ClosingMonth = 'December' 
   AND ConfLevel = 'Low (25%)'
查询结果:

2910657.00

救命!!我做错了什么?

SQL Server中的结果是错误的,还是它在进入PHP时被损坏了,例如,因为它被转换为不太精确的数据类型?正如您在第一组结果中看到的,SQL中的结果是错误的,它在小数点前的7后面加了一个零。对不起,我没有领会到这一点。尝试通过T.ClosingMonth删除第一组
SUM
组,并仅显示内部
SUM
以查看这是否有助于您识别问题。这样做可以用数字清除问题;然而,我现在得到了多行。看起来是每个匹配记录的一行。在Select中添加Distinct可以解决这个问题——只是不确定这样做是否会遇到问题。在进一步测试之后,我的担心是正确的。Distinct确实会导致问题并遗漏一些记录