2016-04-19 7 views
0

Я создаю представление SQL с помощью этого ЗЕЬЕСТ:Stop SUM округление SQL

SELECT 
ISNULL(MONTH(DtRepairComplete), 0) AS RepairMonthNo 
,ISNULL(FORMAT(DtRepairComplete, 'MMMM'), GETDATE()) AS RepairMonth 
,ISNULL(YEAR(DtRepairComplete), 0) AS RepairYear 
,ISNULL(SUM(IntRepairCosts), 0) AS TotalRepairCosts 
,COUNT(IntIncidentID) AS RepairCount 

FROM Incident d 

GROUP BY FORMAT(DtRepairComplete, 'MMMM'), 


YEAR(DtRepairComplete) 
,MONTH(DtRepairComplete) 
,FORMAT(DtRepairComplete, 'MMMM') 

IntRepairCosts является тип данных десятичное (18,0) на столе. Когда я прикрепляю представление к моему проекту, он округляется до целых чисел. Поскольку это значение представляет собой стоимость, мне нужно, чтобы она была точной, а не округленной вверх или вниз.

Могу ли я остановить это поле от округления и еще SUM по запросу?

Заранее спасибо.

+1

Если 'IntReportCosts' является' decimal (18,0) ', то у него нет никаких затрат. –

+0

Благодарим за отзыв. Я не совсем понимаю, что вы имеете ввиду. По «стоимости» я имею в виду сумму в долларах. – CreedC

+0

. , То есть «у него нет никаких центов». –

ответ

3

Тип данных десятичного (18,0) не будет иметь цифр после десятичной и округляется до ближайшего целого значения. Вот почему вы испытываете это. Вы можете проверить это следующим образом:

Declare @Value decimal(18,0) = 123.678 
Select @Value 

вы получите 124

Off стороны, я не знаю, почему кто-то создать тип Decimal (N, 0), а не просто INT или BIGINT. И когда вы работаете с деньгами, Decimal (N, 0) не имеет никакого смысла.

+0

Когда значение хранится в базе данных, любые значения после десятичного разряда теряются, потому что вы сказали SQL Server, что вас это не волнует. Поэтому я не понимаю, как вы сможете это сделать. –

+0

Спасибо. Я исправил столбец десятичной (18,2), и теперь он работает. Еще раз спасибо. – CreedC

 Смежные вопросы

  • Нет связанных вопросов^_^