Sql 视图内部的算术溢出

Sql 视图内部的算术溢出,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,我有一个t-sql视图,其中我从不同的表中查询数据。我使用一个联合体来获取所有数据 Create view ViewName ( ID, Name, Budget, ... ) SELECT ID, Name, Budget, ... FROM Table1 UNION SELECT ID, Name, Budget, FROM Table2 当我查询视图时,我的错误如下。但是,我可以分别选择这两条语句的任何部分,而不

我有一个t-sql视图,其中我从不同的表中查询数据。我使用一个联合体来获取所有数据

Create view ViewName
(
   ID,
   Name,
   Budget,
   ...
)
SELECT 
   ID,
   Name,
   Budget,
   ...
 FROM Table1
 UNION
 SELECT
   ID,
   Name,
   Budget,
 FROM Table2
当我查询视图时,我的错误如下。但是,我可以分别选择这两条语句的任何部分,而不会出现错误。 我怎样才能解决这个问题

Msg 8115,16级,状态2,第1行 将表达式转换为数据类型bigint时出现算术溢出错误


首先,您应该通过逐个注释列来确定哪个列产生错误:

SELECT 
   ID
   --,Name
   --,Budget
   ...
FROM Table1
UNION
SELECT
   ID
   --,Name,
   --,Budget     -- putting commas at beginning is nice in such scenario
FROM Table2
然后必须处理隐式转换和不正确的数据类型

发件人:

以下是使用UNION组合两个查询的结果集的基本规则:

  • 在所有查询中,列的数量和顺序必须相同

  • 数据类型必须兼容。

当数据类型不同时,结果数据类型根据的规则确定。当类型相同但精度、比例或长度不同时,结果根据用于组合表达式的相同规则确定

当运算符组合两个不同数据类型的表达式时,数据类型优先级规则指定优先级较低的数据类型转换为优先级较高的数据类型如果转换不是受支持的隐式转换,则返回错误。

我猜是从
VARCHAR
BIGINT
的转换