sql csv export показывает неверную сумму - PullRequest
0 голосов
/ 29 июня 2018

Я выполняю запрос на 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
......
.....
...

Однако результаты при проверке СУММ для всех записей о расходах составляют 1823065.094

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

Почему CSV показывает сумму 1817751,612 вместо 1823065,094 и как я могу исправить это? Я пытался использовать CAST, ROUND и CONVERT, а также для столбца суммы, не работает. Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Попробуйте запустить счет с использованием десятичных дробей:

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

По всей вероятности, проблема связана с большим количеством имеющихся у вас чисел и тем, что вы используете числа с плавающей запятой. Я предполагаю, что тип на самом деле является 4-байтовым с плавающей точкой, а не 8-байтовым. Если это так, это может быть связано с ошибками округления.

0 голосов
/ 29 июня 2018

Скажите, пожалуйста, какой тип вы используете для столбца Cost?

Это может быть связано с неявным преобразованием между типом sql и типом csv

У меня нет возможности добавить комментарий, извините.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...