确定“转换失败错误”的来源

时间:2012-06-07 03:34:43

标签: sql sql-server sql-server-2008

我正在尝试执行查询:

select 
distinct
billed.accn_id,
payors.PAYOR_PRIORITY,
payors.PAYOR_NAME,
payors.PAYOR_ID,
payorconfig.PAYOR_GROUP,
payorconfig.CONTACT1_ADDR1,
payorconfig.CONTACT1_ADDR2,
payorconfig.CONTACT1_CITY,
payorconfig.CONTACT1_STATE,
payorconfig.CONTACT1_ZIPCODE,
payorconfig.CONTACT1_PHONE,
payorconfig.CONTACT1_FAX,
payorconfig.CONTACT1_EMAIL,
patient.PT_ID,
patient.PT_ADDR1,
patient.PT_ADDR2,
patient.PT_CITY,
patient.PT_ST_ID,
patient.PT_ZIPCODE,
patient.PT_HOME_PHM

from accn_billed_procedures billed
left outer join accn_payors payors
on payors.accn_id=billed.accn_id

left outer join payor_config payorconfig
on payorconfig.payor_id=payors.x_payor_id

left outer join accn_demographics demos
on billed.accn_id = demos.accn_id

left outer join patient_demographics patient
on demos.pt_id=patient.pt_id

并收到此错误:

  

Msg 245,Level 16,State 1,Line 1转换时转换失败   varchar值'121CLAIMS'到数据类型int。

我该怎么知道究竟是什么导致了这个?

是否可能在连接列的数据类型不匹配的连接上出现此错误?

非常感谢你的指导和帮助

1 个答案:

答案 0 :(得分:1)

只是对此进行了尝试,但是因为你的查询在select语句中没有任何复杂的内容 - 尝试转换的唯一逻辑位置是在你的一个连接限定符中:“on payors.accn_id = billed.accn_id “等等。

我怀疑你的一个表实际存储了字段:accn_id或pt_id等作为VARCHAR(或者VARCHAR值可能意外地存储在该列中)

无论如何,数据似乎是可疑的......一方面你有一个int,另一方面是一个字符串。你最好的选择是创建VARCHAR类型的所有ID字段,因为在查询期间尝试将它们转换为性能

希望有所帮助!