2014-01-26 87 views
0

當我使用TSQL這些數字[2005] SUM()函數:SQL總和和excel和差異

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

當我手動計算出結果時,我得到了與Excel相同的5978169000

任何人都知道爲什麼SQL Server以這種方式運行? 感謝

+1

這可能是數字的,比如'1.24E + 07'由兩個系統做不同的逼近。 – user2989408

+1

這個問題似乎是無關緊要的,因爲它不是關於在int而不是float中編程 –

+0

@ user2989408'1.24E + 07'。 '1.24E + 07 = 12400000' –

回答

0

@Jan Doggen

確定 - 我做到了! 非常感謝大家!

我從SUM()參數值創建一個表,然後應用SUM()這些值: 我SUM聲明: SELECT SUM(GrsPrice) From tblItem

這導致5978168776

tblItem模式:

SUM()
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服務器類型爲real,而不是bigint,這是問題的根源。

@ w0lf即使在SQL Server 2008中的結果爲5974638744當值類型是real