我正在尝试创建以下视图:
CREATE VIEW [dbo].[_TEST]
AS
SELECT
a.[PS],
b.[A0001],
CAST(a.[Area] AS DECIMAL(15, 10)) AS A0002,
CAST((b.[0001] / a.[Area]) AS DECIMAL(15, 10)) AS A0003
FROM
dbo.Areas AS a
INNER JOIN
(SELECT
LEFT(PSOA, 6) AS PS, SUM([0001]) as A0001
FROM
dbo.Counts
GROUP BY
LEFT(PSOA, 6) AS b ON a.PS = b.PS
该视图创建良好,但在使用它时出现以下错误:
将数值数据类型转换为数值的算术溢出错误
现在,根据我的理解,这意味着这些值太大而无法放入Decimal(15,10)
。但是,手动计算它们,我得到的最大值A0003
是2151.93382
,这对于Decimal(15,10)
来说很好。我什至尝试Decimal(20,10)
只是为了确定,这返回了相同的错误。数字肯定不是太大,那么出了什么问题呢?
我发现最大面积值实际上是一个十进制(16,10),这解释了这一点。不知道我怎么错过了!
这不会给出错误,该错误可能是由于其他原因造成的。检查您的其他数据,这些数据可能比这更大。
Select Cast(2151.93382 as Decimal(15,10))
您可以在此处查看演示。
我认为表中有多少行SUM([0001])
可以在生成的算术溢出异常中产生大量数据。