日期:2014-05-17  浏览次数:20421 次

在将 varchar 值 '奋斗林场' 转换成数据类型 int 时失败。求解决方法?
select tb.* ,管护责任书.管护负责人 from (
SELECT   林业局,  林场, danwei, RENSHU, 姓名 , 性别, 年龄, 原岗位,责任区号,  日期,管护人编号,是否下岗职工,是否新增就业
FROM  ( SELECT     林业局, 林场, danwei, RENSHU, 姓名,性别, 年龄, 原岗位,责任区号,  日期,管护人编号,是否下岗职工,是否新增就业  FROM   View_林场分组 ) AS derivedtbl_1 
UNION (SELECT     林业局, 林场, danwei, RENSHU, 姓名,性别, 年龄, 原岗位,责任区号, 日期, 管护人编号,是否下岗职工,是否新增就业 FROM   View_林业局人数 )  
UNION (SELECT     林业局, 林场, danwei, RENSHU, 姓名,性别, 年龄, 原岗位,责任区号, 日期, 管护人编号,是否下岗职工,是否新增就业 FROM         View_林场分组 where 是否下岗职工=1 or 是否新增就业=1)
UNION (SELECT     林业局, 林场, danwei, RENSHU, 姓名,性别, 年龄, 原岗位,责任区号,  日期, 管护人编号,是否下岗职工,是否新增就业 FROM         View_林场人员)
 )
 tb
left join 管护责任书 on tb.管护人编号 = 管护责任书.管护人编号

ORDER BY tb.林业局 ,tb.林场, tb.姓名
报错:
在将 varchar 值 '奋斗林场' 转换成数据类型 int 时失败。
求解决方法?新手求教

------解决方案--------------------
现在最关键的是定位问题,你可以一步一步来:

select tb.* ,管护责任书.管护负责人 from (
SELECT   林业局,  林场, danwei, RENSHU, 姓名 , 性别, 年龄, 原岗位,责任区号,  日期,管护人编号,是否下岗职工,是否新增就业
FROM  ( SELECT     林业局, 林场, danwei, RENSHU, 姓名,性别, 年龄, 原岗位,责任区号,  日期,管护人编号,是否下岗职工,是否新增就业  FROM   View_林场分组 ) AS derivedtbl_1 )
 
 tb
left join 管护责任书 on tb.管护人编号 = 管护责任书.管护人编号

ORDER BY tb.林业局 ,tb.林场, tb.姓名


然后再把其他的union 加进去,看看会不会报错,这样就能炸到问题了。
------解决方案--------------------
数据类型不匹配.
举个简单的例子,重现一下LZ的问题,应该明白了吧.

select 100 'x'
union all
select '奋斗林场' 'x'

Msg 245, Level 16, State 1, Line 1
在将 varchar 值 '奋斗林场' 转换成数据类型 int 时失败。