sql csv导出显示不正确的总和

时间:2018-06-29 07:14:04

标签: sql sql-server database csv

我正在sql server 2012上运行查询,并通过将结果保存为选项导出到csv中的成本记录,csv中所有记录的总和显示1817751.612

SELECT SUM(Cost) AS COST FROM TABLE_NAME GROUP BY ...,...,...;

COST 
0.005719641
0
3.56
0.167338156
0.007596698
1.78
0.03634226
......
.....
...

但是在检查所有成本记录的SUM时的结果是1823065.094

SELECT SUM(Z.COST) FROM(SELECT SUM(Cost) AS COST FROM TABLE_NAME GROUP BY ...,...,...) AS Z;

为什么csv将总和显示为1817751.612而不是1823065.094,我该如何更正? 我已经尝试过对Cum列使用CAST,ROUND和CONVERT,但是没有用。 预先感谢

2 个答案:

答案 0 :(得分:1)

尝试使用小数运行计数:

SELECT SUM(Z.COST)
FROM (SELECT SUM(CAST(Cost as DECIMAL(38, 20)) AS COST
      FROM TABLE_NAME
      GROUP BY ...,...,...
     ) AS Z;

问题很可能是由于您拥有大量数字并且您正在使用浮点数。我推测类型实际上是4字节浮点数,而不是8字节。如果是这样,这可能是由于舍入错误。

答案 1 :(得分:0)

请告诉我们您为var resourcesToCache = [ './', './index.html', './jquery-3.2.1.min.js', './pouchdb.min-6.4.1.js', './styles/inline.css', './scripts/app.js' 列使用哪种类型?

这可能是由于sql类型和csv类型之间的隐式转换

抱歉,我没有机会发表评论。