2016-05-30 84 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)