2016-05-30 85 views

回答

1

如果你想知道的,例如一個客戶的最大值可以使用聚合函數,以便在一列

SELECT MAX(myColumn) AS MyColumnCount 
FROM myTable 

得到最大的價值,你可以通過這個客戶羣

SELECT CustomerID, MAX(myColumn) AS MyColumnCount 
FROM myTable 
GROUP BY CustomerID 

你可以找到其他aggregate functions here


如果相反,您對小數類型的範圍感興趣,那麼請考慮您聲明的總位數和小數位數。因此,當所有這些數字都是9時達到最大數量。

因此對於decimal(5,2)它將是999.995是小數點左側和右側的小數點總數。 2是小數點右邊的小數位數。

最大可能的範圍爲小數是-10^38 + 1到10^38 - 1

+0

我的問題是關於小數的可能的最大值。 –

+0

你說的小數列。但是您指的是十進制類型,也可以用於TSQL中的變量和參數。 –

+0

謝謝,你的回答涵蓋了我的問題的所有信息。 –

1

我想強調的一個問題與NUMERIC /十進制值工作時可能會上升。如果NUMERIC_ROUNDABORTARITHABORTON新值的比例更高則產生異常/錯誤。

備註當SET NUMERIC_ROUNDABORT是ON時, 後產生錯誤的精度損失發生在一個表達式。關閉時,精度的損失不會生成錯誤消息,並且結果取整爲存儲結果的列或變量的精度的 。 [...]如果 SET NUMERIC_ROUNDABORT爲ON,則SET ARITHABORT將確定生成的錯誤的嚴重性 。

參考:MSDN

SET NUMERIC_ROUNDABORT ON 
SET ARITHABORT ON 
GO 
DECLARE @a DECIMAL(5, 2) 
SET @a = .115 
SELECT @a AS [Values when all SET are ON] 
GO 

SET NUMERIC_ROUNDABORT OFF 
SET ARITHABORT OFF 
GO 
DECLARE @a NUMERIC(5, 2) 
SET @a = .115 
SELECT @a AS [Values when all SET are OFF] 
GO 

SET NUMERIC_ROUNDABORT OFF 
SET ARITHABORT ON 
GO 
DECLARE @a NUMERIC(5, 2) 
SET @a = .115 
SELECT @a AS [Values when SET is ON/OFF] 

結果:

Msg 8115, Level 16, State 7, Line 5 
Arithmetic overflow error converting numeric to data type numeric. 
Values when all SET are ON 
--------------------------------------- 
NULL 

(1 row(s) affected) 

Values when all SET are OFF 
--------------------------------------- 
0.12 

(1 row(s) affected) 

Values when SET is ON/OFF 
--------------------------------------- 
0.12 

(1 row(s) affected)