2014-01-26 5 views
0

Когда я использую TSQL функция [2005] SUM() по этим номерам:SQL сумма и преуспевать разница сумма

4562500, 
6387500, 
2860000, 
1825000, 
348000, 
2737500, 
3102500, 
6570000, 
2007500, 
2007500, 
4380000, 
9125000, 
936000, 
936000, 
1040000, 
264000, 
240000, 
1200000, 
4562500, 
4.80E+08, 
4000000, 
1176000, 
660000, 
1104000, 
1404000, 
1341600, 
1534000, 
1466400, 
6684000, 
3000000, 
3600000, 
5.14E+09, 
0, 
2.60E+07, 
4197500, 
2736000, 
3084000, 
2916000, 
2640000, 
480000, 
1200000, 
1.80E+08, 
6000000, 
840000, 
9600000, 
3744000, 
4200000, 
3060000, 
7230000, 
1.24E+07, 
600000, 
150000, 
400000, 
2100000 

Это дает мне 5978168776.

при одном и том же вычислении в MS Excel 2007 дает 5978169000.

Когда я вычислил результат вручную, я получил 5978169000 так же, как и Excel.

Кто-нибудь знает, почему SQL Server работает таким образом? благодаря

+1

Это может быть приближением чисел как '1.24e + 07' сделано по-разному два систем. – user2989408

+1

Этот вопрос выглядит не по теме, потому что речь идет не о программировании –

+0

@ user2989408 '1.24E + 07' в int не float. '1.24E + 07 = 12400000' –

ответ

0

@Jan Доги

Оксенгендлером Я сделал это! Спасибо всем!

Я создал таблицу из SUM() значений аргумента, а затем применяется SUM() к этим значениям: моего SUM заявления: SELECT SUM(GrsPrice) From tblItem

Это привело к 5978168776.

tblItem схема:

USE [BudgetDb] 
GO 

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
SET ANSI_PADDING ON 
GO 
CREATE TABLE [dbo].[tblItem](
[ItemCode] [varchar](4) COLLATE Arabic_CI_AS NOT NULL 
[GrsPrice] [real] NULL 
) ON [PRIMARY] 

GO 
SET ANSI_PADDING OFF 

SQL Тип сервера для SUM() значений real вместо bigint и это проблема происхождения.

@ w0lf даже в сервере SQL результате 2008 является 5974638744 когда тип значения real

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