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确实会导致问题并遗漏一些记录