Select Distinct
E.EmpNo,
convert(date,R.APPLYDATE) AS DateWorked,
R.PAYCODENAME
From
TableExportEmployees E
INNER JOIN VP_RTIMEDTLTOTALS R
ON R.PERSONNUM = E.EmpNo
Inner Join VP_SCHEDULE V
ON V.PERSONNUM = E.EmpNo
当我执行此操作时,我收到此错误
Msg 248,Level 16,State 1,Line 1 varchar值的转换 ' 5035899999'溢出了一个int列。
答案 0 :(得分:0)
原因在于错误代码。它试图将该值评估为int类型。
该值超出了int支持的范围。
请参阅:https://docs.microsoft.com/en-us/sql/t-sql/data-types/int-bigint-smallint-and-tinyint-transact-sql
查找违规列,如果您确实需要将该大值存储为数字,则需要将列重新定义为bigint类型。或者,如果可以存储为字符串,则将列重新定义为varchar类型(大于10),因为您的值已经是10位数。
根据您的评论,违规列实际上是PersonNum。 SQL正在尝试将其转换为int以与EmployeeNum进行比较。要修复它,您需要将EmployeeNum重新定义为与PersonNum相同的数据类型,或者将它们重新定义为bigint。
答案 1 :(得分:0)
进行连接时,需要确保连接中使用的列类型在两个表中具有相同的类型。 这可能会导致这些错误。
验证并告诉我们以下列类型: - R.PERSONNUM - E.EmpNo - V.PERSONNUM
如果您使用的是int列,则应使用bigint或numeric
更改它